Сначала я назвал эту тему «История появления 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 начинает расти. В среде компьютерных специалистов появляется неопределённость. Раньше были фанаты:
- Процессоров Intel и видеокарт NVIDIA
- Процессоров Intel и видеокарт ATi
- Процессоров AMD и видеокарт NVIDIA
- Процессоров 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-файлах.