Описываются особенности функционирования 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 приложений