Міжнародная канферэнцыя распрацоўнікаў і карыстальнікаў свабодных праграм

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.