The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз Mesa 24.0, свободной реализации OpenGL и Vulkan "
Отправлено Zenitur, 02-Фев-24 01:38 
Знаю только самое начало.

Драйвер делится на две части:

1. Cам драйвер.
2. Файл библиотеки OpenGL.

Сам драйвер делится на два файла:

1. Ядерную часть (в kernelspace) /lib/modules/2.6.32/kernel/drivers/video/nvidia.ko
2. Юзерспейсную часть. /usr/lib/xorg/modules/drivers/nvidia_drv.so

Интересный факт. Во времена видеокарт без 3D-ускорения, была только юзерспейсная часть. Это называется DDX-драйвер.

Файл библиотеки OpenGL тоже делится на две части:

1. server glx. /usr/lib/xorg/modules/extensions/libglx.so
2. client glx. /usr/lib/libGL.so.1

Если 3D-ускорение не работает - значит, какого-то из этих файлов нет. Проверяй вывод команды glxinfo, чтобы "Server GLX string" и "Client GLX string" были от "NVIDIA Corporation". Если нет - чини. Также проверяй файл "/var/log/Xorg.0.log".

Интересный факт. Графический сервер X11 (X-server) общается с библиотекой OpenGL не напрямую. Между ними есть посредник в виде библиотеки GLX. Цепочка выглядит так: X11-GLX-OpenGL.

Теперь история. OpenGL был создан компанией Silicon Graphics, которая создавала мощные рендер-фермы для компьютерной графики в кино. Рендер-ферма делилась на два компонента: сервер и клиент. Сервер представлял из себя мощный компьютер без монитора. Клиент представлял из себя обычный комп, с монитором, клавиатурой и мышкой. Назывался "рабочая станция".

Ещё нужно было покупать кучу софта. Софт мог быть по стоимости, как сам комп.

Собственно, авторам софта и нужно было как-то общаться с видеокарточкой. На каком-то языке. Так и появился API OpenGL. А ещё есть такая штука, как графический сервер X11. Он появился в 1987 году. Для справки, Linux появился в 1992-м.

Во времена Pentium Pro (ноябрь 1995 года) стало понятно, что архитектура x86 теперь способна потягаться с MIPS и SPARC. В том числе и для 3D-графики. В то время набирала популярность операционная система Linux. Там использовался графический сервер XFree86. Логично, что 86, это архитектура x86, а Free, значит свободный. Значит, на серьёзных UNIX-машинах использовался какой-то другой сервер.

В конце 1996 года вышла видеокарта 3dfx Voodoo - первый 3D-ускоритель для домашних компьютеров, получивший популярность. В начале 1997 года вышла видеокарточка nVidia Riva 128. Под неё были драйверы для Windows 95, Windows NT, Linux, FreeBSD и Solaris. Интересный факт: были драйверы даже для Windows 3.1 - правда, без поддержки 3D.

Что интересно, первые драйверы NVIDIA были с открытым исходным кодом (что нетипично для этой компании). Для того, чтобы запустить драйверы, нужно было серьёзно пропатчить "иксы". Поиграть можно было в игру Quake II - первую коммерческую игру, которая была выпущена для Linux.

Компания Tungsten Graphics придумала, как можно запустить 3D-ускорение под XFree86, не имея необходимости накладывать патчи. Именно они предложили, что отныне драйвер разделён на ядерный и юзерспейсный (раньше был только юзерспейсный). Для написания ядерной части драйвера, в ядре находится модуль DRI, с которым предстоит взаимодействовать вендору видеокарты в процессе написания своего драйвера.

Однако компания NVIDIA раскритиковала DRI и сделала своё. Модуль nvidia.ko по сути даёт вожделенный Direct Rendering, но без использования DRI в ядре и libdrm в юзерспейсе.

Считалось, что получить вожделенный DRI в XFree86 нельзя, что надо создать новый графический сервер. Однако для иксов появилось расширение DRI (одноимённое с модулем ядра), и DRI стало можно юзать в XFree86. Вот как выглядела одна из секций файла /etc/X11/XF86Config:

Section "Module"
    Load    "glx"
    Load    "dri"
EndSection

А ещё она могла выглядеть вот так:

Section "Module"
    Load    "GLcore"
    Load    "bitmap"
    Load    "dbe"
    Load    "ddc"
    Load    "dri"
    Load    "extmod"
    Load    "freetype"
    Load    "glx"
    Load    "int10"
    Load    "record"
    Load    "speedo"
    Load    "type1"
    Load    "vbe"
EndSection

Как хорошо, что сейчас не нужно иметь большой развесистый конфиг.

В декабре 2000 года вышел дистрибутив Red Hat 7.2. Компания NVIDIA начала формировать rpm-пакеты для него и для SUSE. А также run-инсталлятор для остальных систем. Создатели тех или иных дистрибутивов Linux могли перепаковать run-инсталлятор, чтобы получить например пакет deb.

И да, драйвер теперь проприетарный.

Считалось, что в Red Hat проблемные иксы, которые надо патчить. А в SUSE иксы самые лучшие. Доходило даже до того, что самым беспроблемным способом настроить иксы в Red Hat - установить пакеты из SUSE. Впрочем, спустя пару лет иксы "причесали".

А потом произошёл форк XFree86 под именем Xorg.

В 2005 году прекращена разработка XGL - того самого нового сервера, который начали создавать в тот момент, когда считалось, что из-под "иксов" нельзя поюзать DRI. Однако при помощи XGL можно было пощупать композитинг - а это было любопытно. Поэтому поддержку XGL осуществляли до 2008 года (до тех пор, пока последний из драйверов, который не поддерживал AIGLX, не реализовал его поддержку).

В 2008 году появился libxcb. Дело в том, что libX11 был тем ещё мучением для разработчиков программ (куда хуже WinAPI), и поэтому все использовали тулкиты - вместо того, чтобы напрямую общаться с libX11. В libxcb был потенциал.

В 2008 году появился DRI2 - новая версия ядерного модуля. Драйверы radeon, intel и nouveau были переписаны под новый модуль (какое-то время - до 2023 года - в ядре распространялись драйверы DRI1 и DRI2. А вот в Месе поддержку DRI1 бросили ещё в 2012 году - в релизе 8.0).

В 2008 году появился KMS - новая модель драйверов. Теперь драйвер реализовывался целиком в kernelspace, а в DDX-драйвере почти ничего не осталось. У KMS был ряд достоинств и почти не было недостатков.

Ну и в ноябре 2008 года появился Wayland - новый графический сервер, который использует EGL вместо GLX, а также использует KMS в обязательном порядке. Также в обязательном порядке включен композитинг, а также в обязательном порядке - использование тулкитов. Wayland является более легковесным, чем X11.

P.S. Ну что, не сильно длинно получилось?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, [email protected] (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру