LINUX.ORG.RU
ФорумTalks

История открытых и закрытых драйверов видеокарт

 , ,


11

4

Сначала я назвал эту тему «История появления 3D-ускорения в открытых драйверах видеокарт», но 95% текста посвящено закрытым драйверам. Для открытых драйверов нужно было проделать огромную работу и новости выходили редко, наверное поэтому я запомнил мало новостей. В итоге получился исторический текст о событиях, связанными с драйверами видеокарт для Linux и FreeBSD, который, я надеюсь, окажется кому-нибудь интересным. Принимаются исправления, текст можно копировать себе, перерабатывать. Я не стал писать те новости, которые меня не заинтересовали и которые я не запомнил, а также все даты открытия очередной части спецификаций чипсетов ATi/AMD, и дат добавления очередных версий OpenGL. Последнее в драйверах для Linux появляется сразу после появления новой версии OpenGL. Все эти события я узнал благодаря периодическим заходам на сайты linux.org.ru и opennet.ru с 2008 по 2012 год. Текст разбит на части, следующие части - в первых комментариях к теме.

Предыстория.

До 2008 года всё было просто (да и в мире железа тоже всё было просто, Intel/AMD, NVIDIA/ATi). Есть открытые драйверы видеокарт, которые имеют функцию 2D-ускорения, и позволяют выставлять большие разрешения экрана. Они поставляются вместе с дистрибутивом Linux. И есть закрытые драйверы видеокарт, драйверы от производителя, которые отличаются от открытых только наличием 3D-ускорения.

1). Открытый драйвер для видеокарт NVIDIA называется nv. Написан самой NVIDIA.

2). Открытый драйвер ati написан непонятно кем. Пожалуйста, скажите, кем он написан, помогала ли компания ATi написать его, и если нет, то почему он тогда называется открытый, а не свободный? Не застал Linux в то время.

1а). Официальный драйвер NVIDIA. Поддерживает ядра Linux версии 2.4 и 2.6 (а также FreeBSD и Solaris), XFree86 и Xorg. Поставляется в виде run-файла, который универсален для всех дистрибутивов Linux для архитектур процессора x86 и x86_64. Есть 3 ветки драйвера, 7x.xx, 9x.xx и текущая, 100.xx. Поддерживается только текущая (видеокарты GeForce 6-7), а для остальных иногда выпускаются обновления, добавляющие поддержку новых версий ядре Linux и X-серверов.

Очень мало ошибок. Скорость работы 2D и 3D та же, что и в Windows. Есть возможность разгона и регулирования скорости вращения кулера. Есть поддержка SLI. Единственный недостаток драйвера NVIDIA для Linux - не поддерживается 3-way SLI - в остальном полная идентичность Windows-версии (я пишу о том времени, когда GeForce 8 с рядом новых технологий ещё не вышел).

2а). Официальный драйвер ATi. Поддерживает Linux x86 и x86_64, не знаю насчёт 2.4 и XFree86. Один раз была прекращена поддержка старых серий видеокарт - драйвер версии 8.28.8 от 2006 года. Пользователям этих видеокарт оставалось пользоваться только 2D-ускорением, потому что в закрытый драйвер не добавлялась поддержка новых версий X-сервера и ядра Linux. А значит, ветки драйвера две: 8.28.8 и текущая.

Очень много ошибок. Они проявляются во всём: повседневная работа, проиггрывание видео, медленное 3D с искажениями (артефактами), отсутствие функций 2D и 3D-ускорений, полноэкранные приложения, переключение в виртуальный терминал, спящий режим, огромные задержки (рекорд - 5 месяцев) добавления в драйвер поддержки новых видеокарт, ядер Linux и X-сервера.

У меня создаётся впечатление, что создатели драйвера были программистами низкого класса, они писали раздутый код с большим количеством ошибок и неточностей, по принципам «лишь бы скомпилировалось» и «лишь бы заплатили». Хорошо что когда я попробовал Linux, у меня была NVIDIA - а если бы была ATi, остался бы я на нём? На форумах можно было увидеть такую аналитику, «в мире открытого ПО тысячи программистов высокого класса. Но они бессильны перед видеоадаптерами от ATi: реверс-инжиниринг драйверов для таких устройств, как видеокарты, очень сложен. Вот открыли бы ATi спецификации - и сообщество сразу бы написало драйвер получше, чем у них!».

Вот такая предыстория. А теперь история.

2006 год.

1). Компания AMD приобретает компанию ATi. Качество драйверов для Linux начинает расти. В среде компьютерных специалистов появляется неопределённость. Раньше были фанаты:

  1. Процессоров Intel и видеокарт NVIDIA
  2. Процессоров Intel и видеокарт ATi
  3. Процессоров AMD и видеокарт NVIDIA
  4. Процессоров AMD и видеокарт ATi

А теперь или приходилось вторым и четвёртым фанатам менять убеждения и становиться первыми и третьими, или смириться и приобретать оборудование от компании, ставшей соперником другой предпочитаемой компании.

2). Начинается разработка открытого драйвера nouveau, попытки добавить в открытый драйвер nv 3D-ускорение путём реверс-инжиниринга закрытого драйвера.

3). Поддержка видеокарты GeForce 8 появилась, по традиции, сразу после выхода этих видеокарт: 2D-ускорение, 3D-ускрнеие, разгон. Новые технологии CUDA, PureVideo и PhysX, задерживались. Также задерживалось появление поддержки 2D-ускорения для GeForce 8 в открытом драйвере nv, но тогда это ещё никого не волновало: ничего, добавят потом.

2007 год.

1). Свершилось открытие первой части спецификаций видеокарт ATi. Сообщество пользователей Linux ликует! В то, что это действительно случилось, трудно поверить! Разумеется, основная цель этого действия то, что это позволит улучшить работу ПО на видеокартах ATi, а не создание открытого видеодрайвера для Linux, но и для Linux это огромный подарок! Те, кому не терпится получить хороший драйвер для видеокарты ATi интересуются, почему открыли спецификации, а не готовый исходный код драйвера.

2). В первую же неделю после этого появляется открытый видеодрайвер RadeonHD, отличие которого от ati - начальная поддержка 3D-ускорения. После тестирования она была перенесена в ati. Разработчикам RadeonHD давали очереные части спецификаций раньше, чем сообществу, под условиями неразглашения. В RadeonHD появлялись новые функции, и ускорение старых, раньше, чем в ati. Кроме того, ati был стабильнее. Над открытым драйвером трудятся несколько сотрудников компаний AMD и Novell в режиме полного рабочего дня.

3). Появление NVIDIA CUDA одновременно для Windows и Linux. Логично: учёные вряд ли станут держать вычислительные кластеры под Windows. И сразу после появления CUDA во всех новостях о релизах драйвера NVIDIA появляются тонны исправлений CUDA, и так несколько лет. Года два как утихло, наверное. Также странным является способ распространения NVIDIA CUDA для Linux. Для Windows это два файла, 32 и 64-битная программа установки. Для Linux это 12 файлов, для 6 популярных дистрибутивов Linux! И ладно бы ещё были пакеты в родном для дистрибутива формате, RPM/DEB! Но нет: каждый установщик имеет формат run. Странно: run-файл драйвера один для всех дистрибутивов Linux, хотя сделать один файл для всех версий ядра Linux и X-сервера непросто. А здесь их 6! Впервые пользователи Linux столкнулись с таким отношением компании NVIDIA к себе. Список поддерживаемых дистрибутивов Linux. Технология NVIDIA PureVideo задерживается.

Сегодня ситуация не изменилась. Существует библиотека NVIDIA Cg, для игр, есть версия для Linux. Так даже её теперь распространяют не в tar.gz, а в RPM/DEB/tar.gz, а NVIDIA CUDA 4.2 - в 6 run-файлах.

Ответ на: комментарий от registrant

возникает только пара вопросов: зачем те, у кого «все работает», постоянно обновляют блобы вплоть до бета-версий и кто те люди, которых мегабакс регулярно обмазывает квином в толксах

Почему линуксоиды у которых все работает постоянно обновляют систему а виндузятники бояться переходить с одной мажорной версии винды на другую?

DNA_Seq ★★☆☆☆ ()
Ответ на: комментарий от DNA_Seq

> Чипсеты ати - глюкодром априори

Чипсеты ATi не застал. У меня чипсет AMD со встроенной видеокартой, всё работает. AHCI, SATA II, звуковая и видео карты. Сейчас внешняя видеокарта ATi считает OpenCL, а встроенная позволяет без лагов интерфейса пользоваться браузером и играть в 3D-игры.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Думаешь от ребрендинга что-нибудь изменилось?

DNA_Seq ★★☆☆☆ ()
Ответ на: комментарий от ZenitharChampion

По открытым могу немного накидать.

Появление галлиума, написаны r300g r600g i915g i965g У итела основным остается классический драйвер 2 остальных пилятся энтузиастами, в месе 7.12 i965g дропается как мертвый. У амд сначала r300g r600g начинают считаться основными пока в 7.12 не выкинули классик драйвера и они не остались единственными. Про нуво я не помню, помню только что они несколько раз переписывали свои драйвера.

Точно не уверен что имел в виду devl547 под переписыванием интела (не следил) возможно их метание от одного способа ускорения 2D к другому. ЕМНИП EXA > UXA > SNA > Glamor.

Изменения которые имхо стоит отметить в месе в общем. Появление галлиума, ОпенГЛ 3.0 (8.0 для интела возможно в 8.1 радеон), g3dvl стейтрекер (xvmc, vdpau, va). Из последнего(в еще не вышедшей 8.1) clover стейтрекер OpenCL.

Для новых карт радеона поддержки в xf86-video-ati не будет вместо него используют xorg стей трекер.

Поток сознания :) Часть про текущее положение дел, хз что покажется полезным.

Behem0th ★★★★★ ()
Ответ на: комментарий от DNA_Seq

Ничего подобного, после 12й отдельной танковой армии, прошедшей здесь факелом в период осень'11-весна'12, думаю, многие стали делать как в шиндошс.

GateKeeper ★★ ()
Ответ на: комментарий от devl547

какая видюха и какие дрова?

Встроенная GMA 3150, xf86-video-intel 2.19.0.

cruxish ★★★★ ()
Ответ на: комментарий от DNA_Seq

Чипсеты ати - глюкодром априори

На самом деле, не всё так страшно. Единственное, что мне не нравится - иногда проявляется 12309 (на nForce такого не было), а так всё ок.

cruxish ★★★★ ()
Ответ на: комментарий от devl547

Ну эта затычка нетбучная - может.

Что может? Работать в Linux быстрее, чем в венде? А почему другие не могут? :)

cruxish ★★★★ ()
Ответ на: комментарий от cruxish
[behem0th@ArchLinux ~]$ lspci 
00:00.0 Host bridge: Advanced Micro Devices [AMD] nee ATI RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part
00:02.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (external gfx0 port A)
00:05.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (PCI express gpp port B)
00:09.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (PCI express gpp port E)
00:12.0 SATA controller: Advanced Micro Devices [AMD] nee ATI SB600 Non-Raid-5 SATA
00:13.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI0)
00:13.1 USB controller: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI1)
00:13.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI2)
00:13.3 USB controller: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI3)
00:13.4 USB controller: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI4)
00:13.5 USB controller: Advanced Micro Devices [AMD] nee ATI SB600 USB Controller (EHCI)
00:14.0 SMBus: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller (rev 14)
00:14.1 IDE interface: Advanced Micro Devices [AMD] nee ATI SB600 IDE
00:14.2 Audio device: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel HDA)
00:14.3 ISA bridge: Advanced Micro Devices [AMD] nee ATI SB600 PCI to LPC Bridge
00:14.4 PCI bridge: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge
00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Redwood [Radeon HD 5670]
01:00.1 Audio device: Advanced Micro Devices [AMD] nee ATI Redwood HDMI Audio [Radeon HD 5000 Series]
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
03:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)

12309 не налюдаю, так что не факт что изза чипсета.

Behem0th ★★★★★ ()
Ответ на: комментарий от Behem0th

> 03:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)

Я тоже себе вставил FireWire и тоже Via, но пока не придумал для чего использовать, Может устройство приобрету, а может - попробую прямое соединение между компьютерами.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от true_admin

возьми у макскома машину времени, да сгоняй в 2014, делов-то?

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Это распаянный на матери контроллер, использовал раз под виндой чтобы скинуть видео с камеры.

Behem0th ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Открытие кода XvBA, драйвер входит в состав дистрибутивов Linux. Поддержки VA-API в mplayer всё ещё нет. Похоже на то, что разрабатывать XvBA и mplayer-vaapi теперь предлагается сообществу, потому что с момента открытия кода эти проекты не обновлялись. Но никто в сообществе открытого ПО этого, видимо, ещё не понял.

Разработчики XBMC работают над добавлением поддержки XvBA в ffmpeg (поддержка VDPAU там уже есть). Это позволит всем приложениям, использующим ffmpeg, задействовать XvBA, но только если разработчики приложения этим воспользуются. Например разработчики VLC не торопятся реализовать поддержку VDPAU, ограничиваясь VA-API.

RussianNeuroMancer ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

так стоп у него что не все машины изъяли?

я позвоню куда надо, спасибо за информацию.

Thero ★★★★★ ()
Ответ на: комментарий от Behem0th

Для новых карт радеона поддержки в xf86-video-ati не будет вместо него используют xorg стей трекер.

Вы могли бы пояснить подробнее, что это означает, и какие изменения может заметить конечный пользователь?

RussianNeuroMancer ★★★★★ ()
Ответ на: комментарий от RussianNeuroMancer

телепатирую что для GCN будет новый драйвер..

Thero ★★★★★ ()
Ответ на: комментарий от RussianNeuroMancer

хм если я правильно быстро нагуглил то иксы начнут работать с дровами видео както иначе, но лучше я оставлю вопрос людям которые разбираются в этом дольше и пойду смотреть сериалы далше.

Thero ★★★★★ ()
Ответ на: комментарий от RussianNeuroMancer

Сейчас для 2д у нас есть xf86-video-ati, для 3д r300g r600g. Но собирая месу можно указать ключ --enable-xorg, что на выходе даст нам r600g_drv.so (для r600g_drv.so, для r300g не собирал не знаю) который можно использовать как DDX драйвер для иксов. Для этого в xorg.conf нужно указать

Driver      "r600g"

Для последнего поколения чипов амд в xf86-video-ati не была добавлена их поддержка и ставка делалась как раз на использование стейтрекера xorg в месе.

Behem0th ★★★★★ ()
Ответ на: комментарий от Behem0th

для 3д r300g r600g
на выходе даст нам r600g_drv.so (для r600g, для r300g не собирал не знаю) который можно использовать как DDX драйвер для иксов

Иначе говоря использовать 3D-драйвер для взаимодействия с железом? Правильно понимаю?

RussianNeuroMancer ★★★★★ ()
Ответ на: комментарий от RussianNeuroMancer

это 2д драйвер реализует ускорение exa и грузит dri драйвер для 3д.

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

А с GCN как будет? 2D драйвер будет заниматься EXA? Что будет загружать для него DRI? Он сам?

RussianNeuroMancer ★★★★★ ()
Ответ на: комментарий от cruxish

Получается, что у меня сейчас не может быть ни SLI, ни CrossFire.

Лолчто? Сейчас большинство нормальный плат поддерживают одновременно и SLI и Crossfire.

ekzotech ★★★★ ()

Забавно читать про нытьё с поддержкой старых видеокарт.
Ну да, технологии не стоят на месте, и архитектура старых видеокарт несовместима с архитектурой новых. Теперь в итоге либо дропнуть поддержку старых, либо начинать тащить 2 драйвера. AMD выбрали первое, предварительно допилив до юзабельного состояния открытый драйвер. К слову, эффекты compiz вполне сносно крутились на старой 9500pro (это, на минуточку, 2004-2005 год выпуска, ЕМНИП - комп ну ооочень старый), и именно на открытом драйвере, и это было ещё 2 года назад.
Вроде как AMD собирается в основном использовать опенсорс драйвер, что подтверждает наличие свободных драйверов уже для ветки 7ххх, и о более-менее допиленном драйвере для 6ххх. Мне нравится работать с KMS, ноут работает без блоба - и меня вполне устраивает. Поддержку моей карточки в ноуте (4570) должны были дропнуть в майском релизе, или сразу после него.
CUDA нужна для просчётов всяких уравнений и прочего, это да. Для обычного пользователя оно особой выгодны не несёт. Почти все мои знакомые, которые работают с видео, НЕ используют CUDA, в связи с потерей качества и появлением артефактов при рендеринге и кодировании с CUDA. Только один цепляется за CUDA, но что-то я в его успехи не особо верю.

Очень много ошибок. Они проявляются во всём: повседневная работа, проиггрывание видео, медленное 3D с искажениями (артефактами), отсутствие функций 2D и 3D-ускорений, полноэкранные приложения, переключение в виртуальный терминал, спящий режим,

Я тоже использовал NVIDIA на работе, и я в шоке. Если это по мнению нвидия-фанбоев «всё работает» - тогда я снимаю шляпу. Адовые лаги, затыки, нерабочий v-sync, артефакты в простейших эффектах compiz'а, поломаный plymouth - и это всё блоб от nvidia. Я уж молчу про то, как простому пользователю поставить блоб из .run (перейти в консоль, остановить Х-сервер.. меж тем у AMD драйвер ставить куда проще - buildpkg и поставить пакеты) или про то, как пользователю определится, какой из нескольких драйверов ему вообще нужен.

В общем, спасибо за текст, местами поржал - откровенное нвидия-фанбойство.

ekzotech ★★★★ ()
Ответ на: комментарий от ekzotech

Очень много ошибок. Они проявляются во всём: повседневная работа, проиггрывание видео, медленное 3D с искажениями (артефактами), отсутствие функций 2D и 3D-ускорений, полноэкранные приложения, переключение в виртуальный терминал, спящий режим,

> Я тоже использовал NVIDIA на работе, и я в шоке.

Это про fglrx, когда он ещё не был переименован в Catalyst. Скажешь, не так было? Цитата из предыстории - а в конце сказано, что с NVIDIA год за годом накапливаются нерешённые проблемы, а ATi повернулась лицом к пользователям Linux.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от cruxish

А, ну так то гигабайт - чего ты от них хочешь? Они даже линуксоидов послали, сказав что UEFI и secure boot выпиливать ради них не будут.

ekzotech ★★★★ ()
Ответ на: комментарий от ZenitharChampion

Это про fglrx, когда он ещё не был переименован в Catalyst.

Я хз, я первый раз линукс поставил на серьёзной основе в 2008 году, а активно пользовать начал только в 2009. В 2009 у меня из проблем с ATi была одна - интеграшку приходилось отключать, и включать dGPU вместо PowerXpress (она собственно и сейчас у меня остаётся).

Сейчас блоб не использую - меня свободный устраивает. В игрушки всё равно в винде удобнее играть, да для пары программ дуалбут всё равно оставляю.

ekzotech ★★★★ ()
Ответ на: комментарий от ekzotech

А, ну так то гигабайт - чего ты от них хочешь?

А при чём тут гигабайт? Предыдущая материнка от них же на nForce SLi поддерживала. Тут дело в том, что сам чипсет AMD 790X не поддерживает SLi.

Они даже линуксоидов послали, сказав что UEFI и secure boot выпиливать ради них не будут.

UEFI secure boot на десктопе?! No Way.

cruxish ★★★★ ()
Ответ на: комментарий от cruxish

была проблемма нет больше проблемы, и да придётся купить новую материнку если так надо.

ЫЫ а про секурбут и гигабайт это явно вброс веществ.

Thero ★★★★★ ()
Ответ на: комментарий от ekzotech

Сам чипсет от AMD поддерживает сейчас и SLI и Crossfire :)

790X от 990X отличаем? ;-) И ежу понятно, что за три года AMD насчëт SLi должны были почесаться.

А про gigabyte

Казалось бы, при чëм тут UEFI?..

cruxish ★★★★ ()
Ответ на: комментарий от cruxish

Казалось бы, при чëм тут UEFI?..

Secure boot же сейчас привязывают к UEFI.

790X от 990X отличаем? ;-)

И ежу понятно, что за три года AMD насчëт SLi должны были почесаться.

Пф, моя ASUS M2R32-MVP не поддерживает FX-8170 и DDR3. Правда она 2007 года выпуска..

Понятное дело, что раньше некоторые материнские платы и пень4 не поддерживали (а только пень2 и пень3), а нормальные платы и сейчас интелы вообще не поддерживают :)

ekzotech ★★★★ ()
Ответ на: комментарий от ekzotech

отключаемость секурбута теперь в требованиях на винду -_-

гигабайт почти ничего своего в биосы не кладёт, всё напрямую от аварда вроде, посему фиксят только простые ошибки..

ЗЫ с переходом на уефи конечно начали писать больше ибо под уефи проще писать, но в низкоуровневое поведение сами не лезут и врядли будут.

Thero ★★★★★ ()
Ответ на: комментарий от Thero

Я как бэ про отношение к пользователям линукса говорил. «Не нравится - идите покупайте у других». Не очень осторожно, ИМХО. Особенно в свете того, что линукс сейчас едва ли не в каждом новом телевизоре/телефоне стоит уже.

ekzotech ★★★★ ()
Ответ на: комментарий от DNA_Seq

виндузятники бояться переходить с одной мажорной версии винды на другую

Как виндузятник скажу, что это неправда. Вчера ставил восьмерочку, сегодня установил семорочку. Завтра собираюсь обратно поставить XP.
Я переустанавливаю Шindoшs по три раза в день и живу активной и полноценной жизнью.

Raving_Zealot ★★ ()
Ответ на: комментарий от DNA_Seq

А обновиться без переустановки слабо?

Допустим с 7 на 8 можно обновиться. А обратно? Или тем более на ХР ?

И потом, это же не линукс. Там при обновлениях лютые баги косяки бывают - проще сразу переустановить, иначе всё равно придётся переустанавливать.

ekzotech ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.