Описываются особенности функционирования 3D стека Mesa и способы конфигурирования его окружения
Данный раздел справки включает описание проекта Mesa в следующих аспектах: особенности настройки и функционирования, зависимости от других компонентов графической подсистемы, поддержка драйверного обеспечения и доступные переменные окружения.
Бинарные компоненты 3D стека поставляются в составе дистрибутивов операционных систем, либо в виде отдельных пакетов обновлений, предназначенных для функционирования в конкретных дистрибутивах и окружениях. При штатной устаноке бинарные компоненты размещаются по адресу /usr/lib/graphics/mesa
.
В предшествующих дистрибутивах ОС архитектуро-зависимый путь установки бинарных компонентов соответствовал /opt/mesa3d/x86 , что приводило к необходимости постоянной корректировки путей поиска компонентов через переменные окружения, а также вызывало множественные обращения со стороны заказчиков. Данное неочевидное поведение было решено устранить в том числе за счет использования GLVND — универсального загрузчика 3D стеков. Данное поведение актуально для дистрибутивов ОС версии 2020.09 и выше. |
Непосредственная линковка программных компонентов с этой библиотекой не предполагается и нарушает работу загрузчика 3D стеков, библиотеки GLVND.
В предшествующих дистрибутивах ОС библиотека GLVND не применялась. Единственным способом подключения 3D стека являлась линковка приложения непосредственно с библиотеками стека. Это приводило к невозможности проектирования приложений, способных использовать разные 3D стеки и переключаться между ними без привлечения компилятора. Данный недостаток устранен в дистрибутивах ОС версии 2020.09 и выше. |
С поддержкой стандарта OpenCL эквивалентная. Линковка программ с библиотеками стека не предполагается, для этих задач предусмотрен универсальный загрузчик, доступный по стандартному адресу /usr/lib
.
Непосредственная настройка самого стека не требуется и со стороны конечного пользователя практически невозможна. Условием успешной подгрузки библиотек стека в свою очередь является корректная настройка загрузчика. Настройка этого компоннета указана на странице с его описанием.
С точки зрения системной поддержки фреймворка Mesa в графической подсистеме, ему требуется настройка и запуск поддерживаемого драйвера io-display. В таблице ниже указаны конкретные соответствия драйверного обеспечения фреймворка и графической подсистемы.
Настройка универсального загрузчика OpenCL не требуется.
Стек предоставляет несколько универсальных драйверов программного рендеринга и расширяемый диапазон аппаратно акселерированных драйверов для специализированного оборудования.
Поддерживаются следующие драйвера (список соответствует порядку обхода при детектировании оборудования):
Для принудительного выбора драйвера первого уровня иерархии может использоваться переменная окружения GF3D_DRIVER. При установке переменной LIBGL_ALWAYS_SOFTWARE производится принудительное переключение в программный рендеринг. Переменная GALLIUM_DRIVER в свою очередь позволяет переключаться между llvmpipe
и softpipe
.
Поддержка различных технологий по драйверам
Драйвер Mesa | Архитектура | OpenGL | OpenGL ES | Vulkan | OpenCL | Особенности реализации |
---|---|---|---|---|---|---|
i965 | DRI | + | + | - | - | Поддерживается драйверами: devg-intelhd.so, devg-haswell.so, devg-valleyview.so |
r600 | Gallium | + | + | - | - | Поддерживается драйверами: devg-radeonhd.so |
radeonsi | Gallium | + | + | - | + | Поддерживается драйверами: devg-radeonhd.so |
llvmpipe | Gallium | + | + | - | - | Зависимость от драйверов отсутствует, не поддерживается для архитектуры e2k |
softpipe | Gallium | + | + | - | - | Зависимость от драйверов отсутствует |
swrast | swrast | + | + | - | - | Зависимость от драйверов отсутствует |
Поддержка оконных библиотек
Драйвер | GF3D | EGL | GLUT | SDL | Screen |
---|---|---|---|---|---|
i965 | + | - | + | + | - |
r600 | + | + | + | + | - |
radeonsi | + | + | + | + | - |
llvmpipe | + | + | + | + | - |
softpipe | + | + | + | + | - |
swrast | + | + | + | + | - |
stderr
будут печататься дополнительные сообщения об ошибках. Для драйверов с архитектурой Gallium назначение переменной совпадает с MESA_DEBUG. Для DRI драйверов имеет также и расширенный смысл. Доступные значения: stderr
о среднем FPS. Переменная поддерживается только в DRI драйверах, значение характеризует интервал обновления счетчика и вывода сообщений. stderr
будут печататься дополнительные сообщения об ошибках. Доступные значения: flush
после каждой команды рисования stderr
. GL_EXT_foo
и отключает GL_EXT_bar
. OpenGL
API и значение, возвращаемое вызовом: glGetString( GL_VERSION )
Значение должно удовлетворять следующим критериям:
OpenGL
старше версии 3.0. OpenGL
< 3.0 добавлены для совместимости (не-core
профиль) OpenGL
= 3.0 см. ниже OpenGL
> 3.0 соответствуют core
профилю OpenGL
2.1 OpenGL
3.0 OpenGL
3.0 OpenGL
3.1 OpenGL
3.1 Mesa
может не предоставлять полный объем функциональности запрошенной версии стандарта OpenGL (переменная предназначена только для разработчиков драйверов Mesa
). OpenGL
ES
API и значение, возвращаемое вызовом: glGetString( GL_VERSION )
Значение должно удовлетворять следующим критериям:
Mesa
может не предоставлять полный объем функциональности запрошенной версии стандарта OpenGL
ES
(переменная предназначена только для разработчиков драйверов Mesa
). glGetString( GL_SHADING_LANGUAGE_VERSION )
Корректные значения имеют формат "130". Стек Mesa
может не предоставлять полный объем функциональности запрошенной версии шейдерного языка (переменная предназначена только для разработчиков драйверов Mesa
).
/usr/lib/graphics/mesa/mesa
.
pipe_swrast.so
. Доступные значения: /usr/lib/graphics/mesa/gallium-pipe
. true
. false
и задать GALLIUM_HUD_TOGGLE_SIGNAL равным 10
(SIGUSR1
). При этом при передаче сигнала SIGUSR1
оверлей будет скрываться или показываться. stderr
. true
, производятся дополнительные проверки TGSI шейдеров и в stderr
выводятся сведения о найденных ошибках.
1
, драйвер не будет посылать реальные команды оборудованию. Это помогает отлаживать аппаратные зависания.
stderr
. stderr
.
Переменные окружения, доступные в других ОС и версиях 3D стека могут быть найдены по ссылке https://docs.mesa3d.org/envvars.html.
Предыдущий раздел: Разработка OpenGL приложений