X Window System - взгляд в будущее
Ariel Feinerman, Калининград, Россия
LVEE 2008
Компьютерная графика становится частью нашей жизни. Сейчас любая универсальная ОС, не важно где она используется ― в качестве домашней мультимедийной станции, в киноиндустрии, проектировании, в научной визуализации или при создании игр ― не может обойтись без хорошей графической компоненты. В UNIX (исключая MacOS X с технологией Quartz Extreme, которая без всякого X Server напрямую выводит графику с помощью OpenGL) используется система X Window.
Ни ядро, ни X Window изначально не были расчитаны на аппаратное ускорение графики, и здесь есть по меньшей мере две проблемы:
- отсутствие единого механизма управления распределением памяти, и связанные с этим проблемы написания драйверов;
- искусственное разделение графики на 2d и 3d. Если раньше это было оправдано, сегодня основные ресурсы графических ускорителей отвечают за 3d, и использование их для отрисовки 2d ― как это и сделано в OpenGL ― позволит повысить эффективность и создать единый интерфейс.
В докладе рассматривается первая проблема, информации о которой в широком доступе очень мало. Именно драйвер видеокарты позволяет функциям OpenGL пользовательских программ получать аппаратное ускорение.
прямая визуализация в X Window
Оконная система X Window обеспечивает стандартные инструменты и протоколы для построения графических интерфейсов пользователя.
Для координирования работы ядра Linux, системы X Window, аппаратных средств ускорения 3D-графики и основанного на OpenGL механизма визуализации была разработана программная архитектура DRI. В данном подходе применяются DRM-модули - модули пространства ядра, имеющие прямой доступ к памяти и управление общими ресурсами.
Библиотека OpenGL и драйверы пользовательского пространства предоставляются Linux-системам проектом Mesa.
К недостаткам такого подхода можно отнести невозможность одновременного использования аппаратно-ускоренной инфраструктуры OpenGL для отрисовки рабочего стола и иных приложений, например игровых.
Среди технологий, обеспечивающих трехмерную отрисовку рабочего стола, можно выделить два различных подхода:
- Xgl - архитектура X-сервера, использующая прорисовку через OpenGL с помощью glitz. Нуждается в наличии X-сервера и работает поверх него.
- Xegl - новый сервер, использующий единые механизмы для отрисовки 2d и 3d.
Новая архитектура 3D-графики, известная как Gallium3D, предоставляет единый интерфейс управления памятью, облегчающий написание драйверов - состоит из набора интерфейсов и вспомогательных библиотек. Кроме модульной структуры и унифицированного интерфейса к аппаратным ресурсам Gallium3D предусматривает перекладывание задач управления памятью на DRM-модули ядра, что делает интерфейс DRI (называемый в данной инфраструктуре DRI2) в большей степени ориентированным на взаимодействие с графическим процессором и устраняет известные проблемы управления памятью Mesa.