Jump to content

Меса (компьютерная графика)

(Перенаправлено с Gallium3D )

Меса
Оригинальный автор(ы) Брайан Пол
Разработчик(и) В настоящее время: Igalia , Collabora , Valve , Intel , Google , AMD , VMware.
Ранее: Tungsten Graphics [1]
Первоначальный выпуск февраль 1995 г.
Стабильная версия
24.1.5 [2]  Отредактируйте это в Викиданных / 31 июля 2024 г .; 5 дней назад ( 31 июля 2024 г. )
Предварительный выпуск
24.2.0-rc3 Отредактируйте это в Викиданных / 31 июля 2024 г .; 5 дней назад ( 31 июля 2024 г. )
Репозиторий https://gitlab.freedesktop.org/mesa/mesa
Написано в C++ , C , язык ассемблера
Операционная система Кроссплатформенность ( BSD , Haiku , Linux и т. д.)
Тип Графическая библиотека
Лицензия МОЯ лицензия
Веб-сайт https://www.mesa3d.org

Mesa , также называемая Mesa3D и Mesa 3D Graphics Library , представляет собой с открытым исходным кодом реализацию OpenGL , Vulkan и других спецификаций графического API . Mesa преобразует эти спецификации в драйверы графического оборудования конкретного поставщика.

Его наиболее важными пользователями являются два графических драйвера, в основном разработанные и финансируемые Intel и AMD для соответствующего оборудования (AMD продвигает свои драйверы Mesa Radeon и RadeonSI вместо устаревшего AMD Catalyst , а Intel поддерживает только драйвер Mesa). Собственные графические драйверы (например, драйвер Nvidia GeForce и Catalyst) заменяют все Mesa, обеспечивая собственную реализацию графического API. Попытка написать драйвер Mesa Nvidia под названием Nouveau с открытым исходным кодом разрабатывается в основном сообществом.

Помимо 3D-приложений, таких как игры, современные серверы отображения ( X.org’s Glamour или Wayland ’s Weston ) используют OpenGL/ EGL ; поэтому вся графика обычно проходит через Mesa.

Mesa размещается на сайте freedesktop.org и была инициирована в августе 1993 года Брайаном Полом , который до сих пор активно участвует в проекте. Впоследствии Mesa получила широкое распространение и теперь содержит многочисленные материалы от различных людей и корпораций со всего мира, в том числе от производителей графического оборудования группы Khronos , которые администрируют спецификацию OpenGL. Что касается Linux, то разработка также частично осуществлялась за счет краудфандинга . [3]

Видеоигры передают вычисления рендеринга графическому процессору через OpenGL в режиме реального времени. Шейдеры пишутся на языке шейдеров OpenGL или SPIR-V и компилируются на ЦП. Скомпилированные программы выполняются на графическом процессоре.
Иллюстрация графического стека Linux : DRM & libDRM, Mesa 3D . Сервер отображения принадлежит оконной системе и не требуется, например, для игр.

Реализации API рендеринга

[ редактировать ]
Бесплатные реализации Wayland основаны на реализации EGL в Mesa . Специальная библиотека под названием libwayland-EGL , написанная для обеспечения доступа к фреймбуферу , должна была стать устаревшей к выпуску EGL 1.5. На GDC 2014 компания AMD изучала возможность изменения стратегии в сторону использования DRM вместо встроенного в ядро ​​объекта. [4]

Mesa известна как реализация графических API . Исторически основным API, реализованным Mesa, является OpenGL вместе с другими Khronos Group спецификациями, связанными с (такими как OpenVG , OpenGL ES или недавно EGL ). Но Mesa может реализовать и другие API, и это действительно так с Glide (устарело) и Direct3D 9 с июля 2013 года. [5] Mesa также не является специфичной для Unix-подобных операционных систем: например, в Windows Mesa предоставляет API OpenGL поверх DirectX.

Mesa реализует уровень трансляции между графическим API, таким как OpenGL, и драйверами графического оборудования в ядре операционной системы. Поддерживаемая версия различных графических API зависит от драйвера, поскольку каждый драйвер оборудования имеет свою собственную реализацию (и, следовательно, статус). Это особенно верно для «классических» драйверов, в то время как драйверы Gallium3D имеют общий код, который имеет тенденцию унифицировать поддерживаемые расширения и версии.

Mesa поддерживает матрицу поддержки со статусом текущего соответствия OpenGL. [6] [7] визуализируется в мезаматрице .сеть . Mesa 10 соответствует OpenGL 3.3 для аппаратного обеспечения графических процессоров Intel, AMD/ATI и Nvidia. Mesa 11 была анонсирована с некоторыми драйверами, совместимыми с OpenGL 4.1. [8]

Mesa 12 содержит OpenGL 4.2 и 4.3, а также поддержку Intel Vulkan 1.0.

В Mesa 13 реализована поддержка Intel для OpenGL 4.4 и 4.5 (поддерживаются все функции для Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler), но нет Khronos-Test для 4.5-Label) и экспериментальная поддержка AMD Vulkan 1.0 через драйвер сообщества. РАДВ. OpenGL ES 3.2 возможен с Intel Skylake (Gen9). [9]

Первая стабильная версия 2017 года — 17.0 (подсчет нового года). [10] [11] [12] Готовые функции сертифицированы OpenGL 4.5, OpenGL 4.5 для Intel Haswell, [13] [14] OpenGL 4.3 для Nvidia Maxwell и Pascal (GM107+). [15] Огромный прирост производительности был зафиксирован при использовании Maxwell 1 (GeForce GTX 750 Ti и более с GM1xx). Карты Maxwell-2-Card (GeForce GTX 980 и более с GM2xx) разогнаны без информации Nvidia. [16]

Набор тестов Khronos CTS для OpenGL 4.4, 4.5 и OpenGL ES 3.0+ уже доступен (24 января 2017 г.) с открытым исходным кодом, и все тесты для Mesa 13 и 17 теперь возможны без каких-либо затрат. [17]

Вторая стабильная версия 2017 года, 17.1.0, вышла 10 мая 2017 года с некоторыми интересными улучшениями. OpenGL 4.2+ для Intel Ivy Bridge и OpenGL 3.3+ для Intel Open SWR Rasterizer — вот два основных момента. [18] [19]

Благодаря модульной природе OpenGL, Mesa может поддерживать расширения из более новых версий OpenGL, не заявляя о полной поддержке таких версий. Например, в июле 2016 года Mesa поддерживала OpenGL ES 3.1, а также все расширения OpenGL ES 3.2, за исключением пяти, а также ряд расширений, не входящих ни в одну версию OpenGL или OpenGL ES. [20]

Третья версия 17.2 доступна с сентября 2017 года и включает в себя некоторые новые функции OpenGL 4.6 и улучшения скорости в 3D для Intel и AMD. Только 1,4% тестов OpenGL 4.5 в Nouveau для Kepler завершаются неудачей. [21]

4-я версия 17.3 готова с декабря 2017 года. Доступно множество улучшений во многих драйверах. OpenGL 4.6 почти полностью доступен (Spir-V еще не готов). Драйвер AMD Vulkan RADV теперь полностью соответствует требованиям Khronos-Test. [22]

Первая версия 2018 года — 18.0 и доступна с марта 2018 года по той же схеме в 2017 году. [23] Полная поддержка OpenGL 4.6 еще не готова, но многие функции и улучшения были успешно протестированы в RC3. Поддержка 10-битного процессора Intel i965 в цвете также является изюминкой. [24] Новинкой является поддержка Intel Cannon Lake и AMD Vega с актуальной версией Linux. Чипы AMD Evergreen (RV800 или R900) близки к поддержке OpenGL 4.5. Старые чипы AMD R600 или RV700 могут поддерживать только OpenGL 3.3 с некоторыми функциями OpenGL 4.x. Freedreno — это драйвер для оборудования Adreno, близкий к поддержке OpenGL 3.3.

Вторая версия 2018 года — 18.1 – доступна с мая. Целью является Vulkan 1.1.72 в драйвере Intel ANV и AMD RADV. OpenGL 4.6 со spir-V также является основной целью. Возможна постоянная работа по доработке функций и оптимизации драйверов для более старого оборудования, такого как AMD R600/Evergreen, Nvidia Tesla и ранее, Fermi, Kepler или Intel Sandybridge, Ivybridge, Haswell или Broadwell. Архитектура ARM также внесла значительные улучшения в Adreno 3xx/4xx/5xx и Broadwell VC4/VC5 для Raspi с основной целью OpenGL ES.

Третья версия 2018 года — 18.2 – доступна в стабильной версии календаря в сентябре. OpenGL 4.6 со spir-V и Vulkan 1.1.80 находятся в стадии разработки. Программный драйвер для виртуальных машин VIRGL готов к работе с OpenGL 4.3 и OpenGL ES 3.2. RadeonSI также готова к работе с OpenGL ES 3.2. Поддержка сжатия текстур ASTC и поддержка режима совместимости для OpenGL 4.4 (3.1 в версии 18.1) — это еще одна особенность RadeonSI для карт AMD GCN. Доступны новый Vulkan 1.1 и другие функции для Intel и AMD. Дополнительные сведения о Вулкане см. в Mesamatrix. [25]

Четвертая версия 2018 года — 18.3, выпущенная как стабильная версия 18.3.1 в декабре 2018 года. Основными частями являются многие подробные функции и поддержка нового оборудования. Полная поддержка OpenGL 4.6 не готова. [26] [27]

Первая версия 2019 года — 19.0 — выпущена в марте. Полноценная поддержка OpenGL 4.6 не готова, но множество улучшений на этом пути есть во всех драйверах. [28] [29]

Вторая версия 2019 года — 19.1. Переход TGSI на NIR является здесь одной из основных особенностей на пути к OpenGL 4.6 с Spir-V и другими OpenCL. RadeonSI хорошо работает в версии для разработчиков с NIR. [30]

Третья версия 2019 года — 19.2. OpenGL 4.6 готов к бета-версии для нового драйвера Intel Iris. [31]

4-я версия 2019 года — 19.3. OpenGL 4.6 готов для Intel i965 и необязателен для нового драйвера Iris. [32]

Первая версия 2020 года — 20.0. Vulkan 1.2 готов к использованию AMD RADV и Intel ANV. Intel Iris используется по умолчанию для Intel Broadwell Gen 8+. [33] [34] Драйвер RadeonSI по умолчанию переключился на использование NIR вместо TGSI.

Вторая версия 2020 года — 20.1. Многие улучшения готовы во многих драйверах. Zink — это новый виртуальный драйвер для OpenGL поверх Vulkan. [35]

Третья версия 2020 года — 20.2. OpenGL 3.0 для Zink — это одна из новых функций. LLVMpipe будет поддерживать OpenGL 4.3+ (4.5+ в версии 20.3). ARM Panfrost в основном улучшен за счет множества модулей. Общая виртуальная память возможна для OpenCL в Nouveau с Pascal и выше. [36] [37] [38]

4-я версия 2020 года — 20.3. v3d и v3dv — это новые драйверы для OpenGL и Vulkan 1.0 с оборудованием Broadcom, таким как Raspberry Pi 4. OpenCL 1.2 полностью поддерживается в модуле клевера. Zink поддерживает OpenGL 3.3+. Виртуальный драйвер LLVMpipe теперь поддерживает OpenGL 4.5+, планируется версия 4.6. Лавапип (первоначально называвшийся Валлиум [39] ), поскольку дерево Vulkan из LLVMpipe объединено. [40] [41] [42] [43] [44]

В Mesa 21.0 d3d12 будет объединен с OpenGL 3.0–3.3. Microsoft и Collabora разрабатывают новую эмуляцию d3d12 в WSL2 для Windows 10 с Direct 3D 12. OpenCL 1.2 также предназначен для d3d12. Ускорение в 2–5 раз реализовано в Benchmark SPECviewperf с улучшенным кодом OpenGL. [45] [46] [47] [48] Многие функции Mesa 21.0 повышают производительность. [49] Новая версия 21.0.0 доступна для общественности с 11 марта 2021 года.

Mesa 21.1 — второй выпуск 2021 года. [50] OpenGL 4.6+ и OpenGL ES 3.1+ доступны для Zink. AMD Driver 600g можно изменить на NIR с расширенными возможностями для старых карт Radeon HD 5000 и 6000. [51] Qualcomm Turnip достигает версии Vulkan 1.1+ и программной эмуляции Lavapipe Vulkan 1.1+. Драйвер графического процессора Google VirtIO Venus с Vulkan 1.2+ объединен в экспериментальном состоянии с низкой производительностью в главном дереве Mesa. [52]

Mesa 21.2 — третий выпуск 2021 года. Драйвер Google Virtual Vulkan IO Driver Venus будет официально представлен с полной поддержкой Vulkan 1.2+ (подробнее mesamatrix). ARM Panfrost: доступна поддержка OpenGL ES 3.1+, а panVK — новый драйвер Vulkan. Первоначальная поддержка началась для ARM Apple M1 с новым драйвером Asahi. 21.2 доступна с 4 августа 2021 года. [53]

Старый план состоит в том, чтобы разделить старые драйверы на классическое дерево с множеством преимуществ в программировании, поддержке и исправлении ошибок для современной части Gallium 3D. Одной из проблем здесь является Intel i965 с поддержкой популярного старого оборудования для Intel Haswell, а ранее также с поддержкой Windows 10. [54] Новый драйвер Gallium3D Crocus для графики Intel Gen 4 для Haswell находится в разработке, чтобы завершить область Gallium3D с возможным разделением в следующем году 2021 года. Crocus доступен в качестве опции в версии 21.2. [55] Янтарная ветка предназначена для старых драйверов без функций Gallium 3D, таких как Radeon R200, Intel i915 и 965 с актуальной версией 21.3.9. [56]

В версии 22.0 Classic драйверы удалены. Vulkan 1.3 доступен для Intel Anvil и AMD RADV. [57]

Microsoft представляет новый драйвер «Дюжина» для WSL 2 на ранней стадии разработки как Vulkan вместо d3d12 в Mesa 22.1. [58]

RustiCL доступен в версии 22.3 с официальной совместимостью OpenCL 3.0 для графики Intel XE. Производительность равна и лучше AMD ROCm с картой AMD 6700 XT. [59] [60]

Основной целью разработки Mesa 23.0 была трассировка лучей для Vulkan. [61] [62]

Microsoft разрабатывает драйвер Dozen для Vulkan в WSL. Vulkan 1.0+ с 80% версией 1.1 и 1.2 будет доступен в Mesa 23.2 после задержки до версии 23.1 (см. mesamatrix). [63] RustiCL для оборудования AMD доступен в версии 23.1. [64]

VirGL для виртуальных машин переходит с Mesa 23.2 на OpenGL 4.6. [65] Apple Asahi для Apple Arm Machines переходит с OpenGL 2.1 на 3.1 с 90% функций OpenGL 3.2 и 3.3 и OpenGL ES 2.0 на 3.0. [66]

Microsoft поддерживает WSL OpenGL 4.6+ в Mesa 24.0 (в Mesa 23.3: 4.3+) с драйвером прямой трансляции 12. [67]

Таблица API рендеринга

[ редактировать ]
Версия Меса Дата первого выпуска Последнее обновление [68] Вулкан OpenCL OpenGL OpenGL ES OpenVG ЭГЛ ГЛКС Директ3D
1.3.264
2023-09-08
3.0
2020-11-30
4.6
2017-07-31
3.2.6
2019-07-10
1.1
2008-12-03
1.5
2014-03-19
1.4
2005-12-16
12
2015-07-29
Текущая стабильная версия: 23.1. 2023-05-10 23.1.8 [23] [69] 1.3.244: 1.3+ (Intel Gen8+ до XE, AMD GCN Gen2+ до RDNA3, Lavapipe, Google Venus), 1.1+ (Qualcomm Turnip), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK) 1.0, 1.1, 1.2 (полная поддержка), 3.0 (wip, некоторые функции в 21.1), [41] OpenCL 1.2+ и 3.0 с новым RustiCL для AMD GCN и Intel Xe (Mesa 22.3+), AMD R600, Nvidia Fermi+ (Mesa 23.1+) 4,6 (19,3: Intel Gen 8+, 20,0: AMD GCN, 21,1: Zink, llvmpipe, 21,2: Intel Gen 7,5) 3,2 (20,3: Intel i965, AMD radeonsi, llvmpipe, VirGL, freedreno, Zink (21,3); 3,1: AMD r600, Nvidia nvC0, softpipe, Broadcom v3d, ARM Panfrost (21,3), d3d12 (22,0) [70] [71] 1.5 1.4 9.0с [72] [73]
Старая версия, но все еще поддерживается: 23.0. 2023-02-23 23.0.4 [23] [74] 1.3.232: в основном равен 23,1
Старая версия, больше не поддерживается: 22.3. 2022-11-30 22.3.7 [23] [75] 22.3: 1.3.225: 1.3+ (Intel Gen8+, AMD GCN Gen2+, Lavapipe), 1.2+ (Google Venus), 1.1+ (Qualcomm Turnip, Lavapipe (22.2)), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK) )
Старая версия, больше не поддерживается: 22.2. 2022-09-21 22.2.5 [23] [76]
Старая версия, больше не поддерживается: 22.1. 2022-05-20 22.1.7 [23] [77]
Старая версия, больше не поддерживается: 22.0. 2022-03-09 22.0.5 [23] [78]
Старая версия, больше не поддерживается: 21.3. 2021-11-17 21.3.9 [23] [79] 21.3: 1.2.190 (Intel Gen8+, AMD GCN Gen2+, Google Venus (21.3), Lavapipe), 1.0+ (AMD GCN1, Broadcom v3dv), 1.1+ (Qualcomm Turnip, Lavapipe (21.1))
Старая версия, больше не поддерживается: 21.2. 2021-08-04 21.2.6 [23] [80]
Старая версия, больше не поддерживается: 21.1. 2021-05-05 21.1.8 [23] [81]
Старая версия, больше не поддерживается: 21.0. 2021-03-11 21.0.3 [23] [82]
Старая версия, больше не поддерживается: 20.3. 2020-12-03 20.3.5 [23] [83] 20.3: 1.2.158 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv (20.3))
Старая версия, больше не поддерживается: 20.2. 2020-09-28 20.2.6 [23] [84] 1.0, 1.1, 1.2 (НЗП) некоторые тесты на соответствие не прошли.
Старая версия, больше не поддерживается: 20.1. 2020-05-27 20.1.10 [23] [35]
Старая версия, больше не поддерживается: 20.0. 2020-02-19 20.0.8 [23] [85] 1.2+ (Intel Gen8+, AMD GCN Gen2+)
Старая версия, больше не поддерживается: 19.3. 2019-12-11 19.3.5 [23] [86] [87] 1.1+ (Intel Gen8+, AMD GCN Gen2+) (19.1: 1.1.104 19.0: 1.1.102, 18.3: 1.1.90, 18.2: 1.1.84)
Старая версия, больше не поддерживается: 19.2. 2019-09-25 19.2.8 [23] 4.5
Старая версия, больше не поддерживается: 19.1. 2019-06-11 19.1.8 [23]
Старая версия, больше не поддерживается: 19.0. 2019-03-13 19.0.8
Старая версия, больше не поддерживается: 18.3. 2018-12-07 18.3.6
Старая версия, больше не поддерживается: 18.2. 2018-09-07 18.2.8 [25]
Старая версия, больше не поддерживается: 18.1. 2018-05-18 18.1.9 [88] 1.1 (Intel Gen8+, AMD GCN Gen2+)(1.1.73)
Старая версия, больше не поддерживается: 18.0. 2018-03-27 18.0.5 1.0+ (1.0.66)
Старая версия, больше не поддерживается: 17.3. 2017-12-08 17.3.9 1.0 (ПК: ANV Intel Gen7+ Ivy Bridge, только RADV AMD GCN) (заголовок: 17.3: 1.0.63, 17.2: 1.0.54, 17.1: 1.0.42, 17.0: 1.0.38, 13.0: 1.0.6, 12.0: 1.0.3) в разработке. от Галлия
Вычислить (Клевер):
некоторые тесты CTS терпят неудачу
в 1.0 и 1.1,
1.2 (НЗП),
итак 1.0, 1.1, 1.2
неполный [89] [90]
Старая версия, больше не поддерживается: 17.2. 2017-09-04 17.2.8
Старая версия, больше не поддерживается: 17.1. 2017-05-10 17.1.10
Старая версия, больше не поддерживается: 17.0. 2017-02-13 [91] [10] 17.0.7
Старая версия, больше не поддерживается: 13.0. 2016-11-01 [92] 13.0.6 4.4
(4.5 Нет контрольной этикетки)
Старая версия, больше не поддерживается: 12.0. 2016-07-08 [93] 12.0.6 4.3 [93] 3.1
Старая версия, больше не поддерживается: 11.2. 2016-04-04 [94] 11.2.2 4.1 (Интел 3.3+)
Старая версия, больше не поддерживается: 11.1. 2015-12-15 [95] 11.1.4 3.0
Старая версия, больше не поддерживается: 11.0. 2015-09-12 [96] 11.0.9
Старая версия, больше не поддерживается: 10.6. 2015-06-15 [97] 10.6.9 3.3 [98] 1.4
Старая версия, больше не поддерживается: 10.5. 2015-03-06 [99] 10.5.9 1.1
Старая версия, больше не поддерживается: 10.4. 2014-12-14 [100] 10.4.7
Старая версия, больше не поддерживается: 10.3. 2014-09-19 [101] 10.3.7
Старая версия, больше не поддерживается: 10.2. 2014-06-06 [102] 10.2.9
Старая версия, больше не поддерживается: 10.1. 2014-03-04 [103] 10.1.6
Старая версия, больше не поддерживается: 10.0. 2013-11-30 [104] 10.0.5
Старая версия, больше не поддерживается: 9.0. 2012-10-08 9.0.3, 9.1.7, 9.2.5 3.1 2.0
Старая версия, больше не поддерживается: 8.0. 2012-02-08 8.0.5 3.0
Старая версия, больше не поддерживается: 7.0. 2007-06-22 7.0.4, ..., 7.11.2 2.1
Старая версия, больше не поддерживается: 6.0. 2004-01-06 6.0.1 1.5 1.3
Старая версия, больше не поддерживается: 5.0. 2002-11-13 5.0.2 1.4
Старая версия, больше не поддерживается: 4.0. 2001-10-22 4.0.4 1.3
Старая версия, больше не поддерживается: 3.0. 1998-09 3.1, 3.2.1, 3.4.2.1 1.2
Старая версия, больше не поддерживается: 2.0. 1996-10 2.6 1.1
Старая версия, больше не поддерживается: 1.0. 1995-02 1.2.8 1.0
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Будущий выпуск

Группа Khronos официально анонсировала Vulkan API в марте 2015 года и официально выпустила Vulkan 1.0 16 февраля 2016 года. Vulkan нарушает совместимость с OpenGL и полностью отказывается от концепции монолитного конечного автомата. Разработчики Gallium3D назвали Vulkan чем-то вроде Gallium3D 2.0 — Gallium3D отделяет код, реализующий конечный автомат OpenGL, от кода, специфичного для оборудования.

Версия 1.3 доступна сразу с Mesa 22.0. Оборудование с поддержкой OpenGL ES 3.1 должно работать на уровне Vulkan 1.3 и более ранних версиях. [105]

Поскольку Gallium3D принимает TGSI, Vulkan принимает SPIR-V ( версия стандартного переносимого промежуточного представления «V», как в «Vulkan»).

Intel выпустила реализацию драйвера Vulkan для своего оборудования в день официального выпуска спецификации, но она была включена в основной состав только в апреле и поэтому стала частью Mesa 12.0, выпущенной в июле 2016 года. Хотя драйвер i965 уже не был написан в соответствии с спецификациям Gallium3D, для драйвера Vulkan еще меньше смысла подключать его поверх Gallium3D. Точно так же нет никаких технических причин использовать NIR, но сотрудники Intel реализовали свой драйвер Vulkan именно таким образом. [106]

Ожидается, что собственный драйвер Vulkan от AMD, выпущенный в марте [ когда? ] , и было объявлено, что в будущем оно будет выпущено как бесплатное программное обеспечение с открытым исходным кодом и будет включено в Mesa, также отказывается от Gallium3D. [107]

RADV — бесплатный проект для AMD, доступный начиная с версии 13. [9] Соответствие Хронос-Тест появилось в версии 17.3. Актуально — полная поддержка Vulkan 1.0 и 1.1, начиная с Mesa 18.1.

Nvidia выпустила свой проприетарный драйвер GeForce с поддержкой Vulkan в день запуска, а Imagination Technologies (PowerVR), Qualcomm (Adreno) и ARM (Мали) сделали то же самое или, по крайней мере, анонсировали проприетарные драйверы Vulkan для Android и других операционных систем. Но когда и появятся ли дополнительные бесплатные реализации Vulkan с открытым исходным кодом для этих графических процессоров, еще неизвестно.

Программный драйвер Mesa VIRGL запускает разработку Vulkan в 2018 году с проектов GSOC по поддержке виртуальных машин. [108]

Lavapipe — это драйвер программного обеспечения Vulkan на базе ЦП, брат LLVMpipe. Mesa версии 21.1 поддерживает Vulkan 1.1+. [109]

Google представляет драйвер Venus Vulkan для виртуальных машин в Mesa 21.1 с полной поддержкой Vulkan 1.2+. [52]

Qualcomm Turnip и Broadcom v3dv — это новые драйверы для оборудования Qualcomm Adreno и Broadcom Raspberry 4. Turnip — это Vulkan, брат freedreno для OpenGL. V3dv поддерживает Vulkan 1.0+, начиная с Mesa 20.3. В версии 21.1 Turnip поддерживает Vulkan 1.1+. [110] [111] [112]

Panfrost PanVK для ARM Mali находится на пути к Vulkan 1.1, но с Mesa 22.0 доступна только стабильная версия 1.0. [113]

Project Dozen соединяет Direct 3D 12 (d3d12) с Vulkan для эмуляции Linux WSL2 в Windows 10 и 11. В Mesa 23.2 поддерживается полностью совместимый Vulkan 1.0 и 80% версий 1.1 и 1.2 (mesamatrix). [114] [115]

Явное ограждение

[ редактировать ]

Своего рода барьер памяти, отделяющий один буфер от остальной памяти, называется забором. Ограждения предназначены для того, чтобы гарантировать, что буфер не будет перезаписан до завершения операций рендеринга и отображения. Неявное ограждение используется для синхронизации между графическими драйверами и оборудованием графического процессора. Ограждение сигнализирует, когда буфер больше не используется одним компонентом, поэтому его можно использовать или повторно использовать другим. Раньше ядро ​​Linux имело неявный механизм ограждения, при котором ограждение напрямую прикреплялось к буферу (см. дескрипторы GEM и FD), но пользовательское пространство об этом не знает. Явное ограждение предоставляет ограждения пользовательскому пространству, где пользовательское пространство получает ограждения как от подсистемы Direct Rendering Manager (DRM), так и от графического процессора. Явное ограждение требуется для Vulkan и дает преимущества при трассировке и отладке.

В ядре Linux 4.9 в mainline добавлена ​​платформа синхронизации Android. [116]

Общее управление буфером

[ редактировать ]

Generic Buffer Management (GBM) — это API, который предоставляет механизм выделения буферов для рендеринга графики, привязанный к Mesa. GBM предназначен для использования в качестве собственной платформы для EGL на DRM или openwfd. Создаваемый им дескриптор можно использовать для инициализации EGL и создания целевых буферов рендеринга. [117]

Mesa GBM — это абстракция API-интерфейсов управления буфером, специфичных для графического драйвера (например, различных библиотек libdrm_*), реализованных внутри системы путем вызова драйверов графического процессора Mesa.

Например, композитор Wayland Weston выполняет рендеринг с использованием OpenGL ES 2, который инициализируется путем вызова EGL. Поскольку сервер работает на «голом драйвере KMS », он использует платформу EGL DRM, которую действительно можно было бы назвать платформой GBM, поскольку она опирается на интерфейс Mesa GBM.

На XDC2014 сотрудник Nvidia Энди Ритгер предложил улучшить EGL, чтобы заменить GBM. [118] Сообщество это не восприняло положительно, и Nvidia в конце концов передумала. [119] и применил другой подход.

Реализации API-интерфейсов ускорения видео

[ редактировать ]

Существует три возможных способа выполнения вычислений, необходимых для кодирования и декодирования видеопотоков:

  1. использовать программную реализацию алгоритма сжатия или декомпрессии видео (обычно называемую кодеком) и выполнять это программное обеспечение на C. процессоре
  2. использовать программную реализацию алгоритма сжатия или декомпрессии видео (обычно называемую КОДЕК) и выполнять это программное обеспечение на G PU ( движок 3D-рендеринга )
  3. использовать полную (или частичную) аппаратную реализацию алгоритма сжатия или распаковки видео; стало очень распространенным явлением интеграция таких ASIC в чип графического процессора/ЦП/SoC и, следовательно, они широко доступны; по маркетинговым причинам компании создали бренды для своих ASIC, такие как PureVideo (Nvidia), Unified Video Decoder (AMD), Video Coding Engine (AMD), Quick Sync Video (Intel), DaVinci (Texas Instruments), CedarX (Allwinner), Кристалл HD (Бродком); некоторые ASIC доступны для лицензирования в качестве полупроводникового ядра интеллектуальной собственности ; обычно разные версии реализуют разные алгоритмы сжатия и/или распаковки видео; поддержка таких ASIC обычно входит в драйвер ядра для инициализации оборудования и выполнения низкоуровневых действий. Mesa, работающая в пользовательском пространстве, содержит реализации нескольких API для программного обеспечения, например медиаплеера VLC , GStreamer , HandBrake и т. д., для удобного доступа к таким ASIC:

Например, Nouveau , который был разработан в рамках Mesa, но также включает в себя компонент ядра Linux, который разрабатывается как часть ядра Linux, поддерживает ASIC под брендом PureVideo и обеспечивает доступ к ним через VDPAU и частично через XvMC. . [120]

Бесплатный драйвер Radeon поддерживает Unified Video Decoder и Video Coding Engine через VDPAU и OpenMAX. [121]

V4L2 — это интерфейс между ядром и пользовательским пространством для битовых потоков видео, передаваемых веб-камерами или ТВ-тюнерами.

Из-за проблем с патентами, касающихся H.264 , H.265 и VC-1 видеокодеков , Fedora Linux отключила поддержку ускорения VAAPI для тех, кто был в своей сборке Mesa в сентябре 2022 года. [122]

Драйверы устройств

[ редактировать ]
Драйверы графических устройств реализованы с использованием двух компонентов: UMD (драйвер пользовательского режима) и KMD (драйвер режима ядра). Начиная с ядра Linux 4.2, AMD Catalyst и Mesa будут использовать один и тот же драйвер ядра Linux: amdgpu . Amdgpu предоставляет интерфейсы, определенные DRM и KMS.

Доступные бесплатные драйверы устройств с открытым исходным кодом для графических чипсетов «контролируются» Mesa (поскольку существующие бесплатные реализации API с открытым исходным кодом разрабатываются внутри Mesa). В настоящее время существует две платформы для написания графических драйверов: «классическая» и Gallium3D. [123] Обзор некоторых (но не всех) драйверов, доступных в Mesa, представлен на сайте mesamatrix. .сеть .

Существуют драйверы устройств для карт AMD/ATI R100–R800, Intel и Nvidia с 3D-ускорением. Ранее существовали драйверы для процессоров IBM/Toshiba/Sony Cell для наборов микросхем PlayStation 3 , S3 Virge и Savage , наборов микросхем VIA, Matrox G200 и G400 и других. [124]

Бесплатные драйверы с открытым исходным кодом конкурируют с проприетарными драйверами с закрытым исходным кодом. В зависимости от наличия документации по оборудованию и рабочей силы бесплатные драйверы с открытым исходным кодом более или менее отстают в поддержке 3D-ускорения нового оборудования. Кроме того, производительность 3D-рендеринга обычно была значительно ниже, за некоторыми заметными исключениями. [125] [126] [127] [128] Сегодня это по-прежнему справедливо для Nouveau для большинства графических процессоров NVIDIA, в то время как на графических процессорах AMD Radeon открытый драйвер теперь в основном соответствует или превосходит производительность проприетарного драйвера.

Инфраструктура прямого рендеринга (DRI)

[ редактировать ]

В то время, когда 3D- видеокарты стали более распространенными для ПК, люди, частично поддерживаемые некоторыми компаниями, начали работать над добавлением в Mesa большей поддержки аппаратного ускорения 3D-рендеринга. [ когда? ] Инфраструктура прямого рендеринга (DRI) была одним из подходов к взаимодействию Mesa, OpenGL и других библиотек API 3D-рендеринга с драйверами устройств и оборудованием. После достижения базового уровня удобства использования в Mesa была официально добавлена ​​поддержка DRI. Это значительно расширило диапазон доступной аппаратной поддержки при использовании библиотеки Mesa. [129]

После адаптации к DRI библиотека Mesa, наконец, взяла на себя роль внешнего компонента полномасштабной инфраструктуры OpenGL с различными внутренними компонентами, которые могли предлагать различную степень аппаратной поддержки 3D, не отказываясь при этом от полной возможности программного рендеринга. В общей системе использовалось множество различных программных компонентов. [129]

Хотя конструкция требует тщательного взаимодействия всех этих компонентов, интерфейсы между ними относительно фиксированы. Тем не менее, поскольку большинство компонентов, взаимодействующих со стеком Mesa, имеют открытый исходный код, экспериментальная работа часто проводится путем изменения сразу нескольких компонентов, а также интерфейсов между ними. Если такие эксперименты окажутся успешными, их можно будет включить в следующий основной или второстепенный выпуск. Это относится, например, к обновлению спецификации DRI, разработанной в период 2007-2008 годов. Результатом этого эксперимента является DRI2, работающий без блокировок и с улучшенной поддержкой заднего буфера. Для этого была создана специальная git -ветка Mesa. [130]

DRI3 поддерживается драйвером Intel с 2013 года. [131] [132] и используется по умолчанию в некоторых дистрибутивах Linux с 2016 года. [133] чтобы включить поддержку Vulkan и многое другое. Он также используется по умолчанию на оборудовании AMD с конца 2016 года (X.Org Server 1.18.3 и новее). [134]

Программное обеспечение рендеринга

[ редактировать ]

Mesa также содержит реализацию программного рендеринга под названием swrast , который позволяет шейдерам запускаться на ЦП в качестве резерва, когда отсутствуют аппаратные графические ускорители. Программный растеризатор Gallium известен как softpipe или создан с поддержкой LLVM llvmpipe , который генерирует код ЦП во время выполнения. [135] [136] Начиная с Mesa 10.x OpenGL 3.3+ поддерживается для Softpipe (10.3) и LLVMpipe (10.2). На самом деле около 80% функций OpenGL 4.x реализованы в Mesa 17.3 (см. Mesamatrix).

В Mesa 12.0 доступен новый Intel Rasterizer OpenSWR с большими преимуществами в кластерах для больших наборов данных. Он больше ориентирован на инженерную визуализацию, чем на игровые или художественные изображения, и может работать только на процессорах x86. [137] С другой стороны, теперь поддерживается OpenGL 3.1+. [138] В некоторых примерах были измерены значения ускорения от 29 до 51, относящиеся к LLVMPIPE. [139] OpenGL 3.3+ поддерживается для OpenSWR, начиная с Mesa 17.1.

VirGL — это растеризатор для виртуальных машин, реализованный в Mesa 11.1 с 2015 года с поддержкой OpenGL 3.3 и представленный в Mesamatrix начиная с Mesa 18. В новой версии Mesa 18.2 он поддерживает больше, чем другие, OpenGL 4.3 и OpenGL ES 3.2. Около 80% функций OpenGL 4.4 и 4.5 также готовы. Разработка Vulkan начинается с проектов GSOC 2018. [140] [141] [142] [108] [143] [144] [145]

Фактическое состояние virGL в Mesamatrix — это полная поддержка OpenGL 4.6+ и OpenGL ES 3.2+ с некоторым необходимым программным обеспечением Linux. [146]

D3d12 — это проект Microsoft для эмуляции WSL2 OpenGL 3.3+ и OpenCL 1.2+ с Direct3D 12. D3D12 объединен в версии 21.0. [45] Фактическое состояние в Mesa 23.1 — OpenGL 4.2+ с почти 4.4+ и OpenGL ES 3.1+.

Venus — это новый драйвер графического процессора Vulkan VirtIO для графического процессора в виртуальных машинах от Google. Венера добавлена ​​в 21.1 и представлена ​​для публики в 21.2. [52] Venus поддерживает Vulkan 1.3+ в Mesa 23.1. Аппаратный минимум — Vulkan 1.1 с некоторыми расширениями. [147]

Мега драйверы

[ редактировать ]

Идея объединения нескольких драйверов в один «мега» была предложена Эммой Анхольт. Он позволяет использовать одну копию общего кода Mesa среди нескольких драйверов (вместо того, чтобы он существовал в каждом драйвере отдельно) и обеспечивает лучшую производительность, чем отдельная общая библиотека, за счет удаления внутреннего интерфейса библиотеки. [148] Трекеры состояния для VDPAU и XvMC стали отдельными библиотеками. [149]

шейдер-БД

[ редактировать ]

Shader-db — это коллекция из около 20 000 шейдеров, собранных из различных компьютерных игр и тестов, а также некоторых скриптов для их компиляции и сбора статистики. Shader-db предназначен для проверки оптимизации.

Было замечено, что неожиданное количество шейдеров не написаны вручную, а генерируются. Это означает, что эти шейдеры изначально были написаны на HLSL , а затем переведены на GLSL с помощью какой-либо программы-переводчика, например, HLSL2GLSL . Проблема в том, что сгенерированный код зачастую далек от оптимального. Мэтт Тернер сказал, что гораздо проще исправить это в программе-переводчике, чем заставлять компилятор Mesa нести бремя работы с такими раздутыми шейдерами.

Shader-db не может считаться бесплатным программным обеспечением с открытым исходным кодом. Чтобы легально использовать его, необходимо иметь лицензию на все компьютерные игры, в состав которых входят шейдеры.

Архитектура программного обеспечения

[ редактировать ]
Графический драйвер состоит из реализации конечного автомата OpenGL и стека компиляции для компиляции шейдеров в машинный язык графического процессора. Эта компиляция, как и многое другое, выполняется на процессоре, затем скомпилированные шейдеры отправляются на графический процессор и выполняются им. (SDL = простой уровень DirectMedia ).
Промежуточные представления (IR) в Mesa: GLSL IR, Mesa IR, TGSI и LLVM IR . Отсутствуют HIR, LIR и NIR.
Mesa IR будет полностью удалена.

Так называемые «драйверы графических устройств пользовательского режима» (UMD) в Mesa имеют очень мало общего с тем, что обычно называют драйвером устройства . Есть несколько отличий:

  • они предназначены для работы поверх дополнительно существующих драйверов графических устройств режима ядра, которые, например, доступны как часть ядра Linux, найденного в исходном коде в разделе /drivers/gpu/drm/ Каждый UMD взаимодействует со своим аналогом в режиме ядра с помощью определенной библиотеки с именем libdrm_special и общей библиотеки с именем libdrm . Этот раздел должен рассматривать исключительно часть пользовательского режима над libdrm.
  • существует некоторая реализация конечного автомата , как указано, например, в OpenGL; эта реализация конечного автомата OpenGL может использоваться несколькими UMD или нет.
  • они представляют собой большую часть своего рода компилятора, который принимает, например, GLSL и в конечном итоге выводит машинный код . Парсеры могут использоваться несколькими UMD или быть конкретными.

Промежуточные представления Месы

[ редактировать ]

Одной из целей Mesa является оптимизация кода, который должен выполняться соответствующим графическим процессором. Другой вариант — совместное использование кода. Вместо документирования частей программного обеспечения в этой статье будут рассмотрены промежуточные представления, используемые в процессе компиляции и оптимизации. См. Абстрактное синтаксическое дерево (AST) и Статическую форму однократного присваивания (форму SSA).

SPIR-V — это определенная версия Standard Portable Intermediate Representation . Идея состоит в том, что графические приложения выводят SPIR-V вместо GLSL. В отличие от последнего, SPIR-V является двоичным, чтобы избежать различий в реализации между интерфейсами компилятора GLSL разных реализаций драйверов, поскольку это было основным источником несовместимости приложений и ошибок. Также двоичный файл SPIR-V обычно подвергался некоторой общей оптимизации. Двоичное представление SPIR-V также предлагает некоторую степень запутывания, что может понравиться некоторым поставщикам программного обеспечения как форма защиты интеллектуальной собственности; однако SPIR-V содержит достаточно информации для анализа, и существуют инструменты, которые преобразуют SPIR-V обратно в высококачественный, удобочитаемый код высокого уровня . UMD необходимо применять только оптимизации, специфичные для поддерживаемого оборудования.

ГЛСЛ ЕСТЬ

[ редактировать ]

NIR (Новое внутреннее представление) было введено для преодоления ограничений TGSI. [150] [151] NIR был расширен в последних и актуальных выпусках как основа поддержки Spir-V и с 2016 года является основной областью разработки. LLVMpipe, i965, RadeonSI, Nouveau, freedreno, vc4 заменены на NIR с TGSI. RADV, Zink и другие новые драйверы начинаются с NIR. Все драйверы с полной поддержкой OpenGL 4.6 связаны с NIR поддержкой SPIR-V. Также AMD R600 имеет форк с NIR для лучшей поддержки серий HD5000 и HD6000. Эта опция для r600 используется по умолчанию, начиная с Mesa 21.0.

Инфраструктура шейдеров Tungsten Graphics (TGSI) была представлена ​​в 2008 году компанией Tungsten Graphics. Все UMD в стиле Gallium3D используют TGSI.NIR теперь является основной областью разработки, поэтому TGSI предназначен только для старых драйверов, таких как инфраструктура по умолчанию r300g, и через несколько лет будет устаревшим.

Код GLSL-To-TGSI будет удален в Mesa 22.2. По умолчанию используется более новая версия NIR-to-TGSI с GLSL-to-NIR для всех собственных драйверов NIR. Этот путь кода NIR поддерживает некоторые старые драйверы TGSI. Позже NIR-To-TGSI станет устаревшим только для собственных драйверов NIR. [152]

УМД radeonsi и llvmpipe не выводить машинный код, а вместо этого LLVM IR. С этого момента LLVM выполняет оптимизацию и компиляцию в машинный код. Это означает, что также должна быть установлена ​​определенная минимальная версия LLVM.

РАДВ АКО ИК

[ редактировать ]

RADV ACO использует собственный IR, близкий к NIR, для оптимизации и генерации конечного двоичного кода для шейдеров Vulkan SPIR-V поверх графических процессоров Radeon (GCN 1+, также известных как GFX6+). Начиная с версии 20.1.0 ACO используется только в RADV (драйвер Vulkan), а не в RadeonSI.

Компилятор GLSL компании Mesa

[ редактировать ]

Компилятор GLSL компании Mesa генерирует собственный IR. Поскольку требования к каждому драйверу сильно отличаются от требований LIR, он различает HIR (IR высокого уровня) и LIR (IR низкого уровня).

Галлий3D
Оригинальный автор(ы) Tungsten Graphics (теперь VMware )
Предварительный выпуск
0.4 [153] / 24 апреля 2010 г .; 14 лет назад ( 24 апреля 2010 г. )
Репозиторий
Написано в C++ , C , язык ассемблера
Операционная система Кросс-платформенный
Тип Графическая библиотека
Лицензия МОЯ лицензия
Веб-сайт www .freedesktop .org /неделя /Программное обеспечение /галлий /

Gallium3D — это набор интерфейсов и набор вспомогательных библиотек. [154] предназначен для упрощения программирования драйверов устройств для наборов микросхем 3D-графики для нескольких операционных систем, API-интерфейсов рендеринга или ускорения видео. Это бесплатное программное обеспечение драйвера графического устройства с открытым исходным кодом .

Матрица функций предоставляется на сайте mesamatrix. .сеть .

Разработка Gallium3D началась в 2008 году в компании Tungsten Graphics. [155] и реализация доступна в виде бесплатного программного обеспечения с открытым исходным кодом как часть Mesa 3D, размещенного на сайте freedesktop.org . Основная цель — упростить разработку драйверов, объединить в одной точке дублированный код нескольких разных драйверов и обеспечить поддержку современных аппаратных архитектур. Это достигается за счет лучшего разделения труда, например, путем передачи управления памятью драйверу DRI ядра .

Gallium3D является частью Mesa с 2009 года. [156] и в настоящее время используется бесплатным графическим драйвером с открытым исходным кодом для Nvidia ( nouveau ), проект [157] [158] для AMD R300 R900 , [159] [160] [161] Драйвер Intel Iris для iGPU поколения 8+ [162] и другие бесплатные драйверы устройств графического процессора с открытым исходным кодом .

Архитектура программного обеспечения

[ редактировать ]

Gallium3D упрощает программирование драйверов устройств, разделяя драйвер графического устройства на три части. Это достигается за счет введения двух интерфейсов : интерфейса отслеживания состояния Gallium3D и интерфейса Gallium3D WinSys . Эти три компонента называются:

Трекер состояния Gallium3D
Каждый графический API, с помощью которого обращается к драйверу устройства, имеет свой собственный трекер состояния, например, существует трекер состояния Gallium3D для OpenGL и другой для Direct3D или GLX . Каждый трекер состояния содержит реализацию интерфейса трекера состояния Gallium3D и уникален, то есть используется всеми существующими драйверами устройств Gallium3D.
Драйвер аппаратного устройства Gallium3D
Это фактический код, специфичный для базового 3D-графического ускорителя, но только в той степени, в которой это позволяет интерфейс Gallium3D WinSys. Для каждого доступного графического чипа существует уникальный драйвер аппаратного устройства Gallium3D, каждый из которых реализует интерфейс отслеживания состояния Gallium3D, а также интерфейс Gallium3D WinSys. Драйвер аппаратного устройства Gallium3D понимает только TGSI (Tungsten Graphics Shader Infrastructure), промежуточный язык для описания шейдеров. Этот код транслировал шейдеры, преобразованные из GLSL в TGSI, далее в набор инструкций , реализуемый графическим процессором.
Галлий3D WinSys
Это специфично для базового ядра , операционной системы и каждое из них реализует интерфейс Gallium3D WinSys для взаимодействия со всеми доступными драйверами аппаратных устройств Gallium3D.
VC4 и freedreno могут напрямую использовать NIR (и использовать tgsi_to_nir для шейдеров, которые не используют glsl_to_nir).
Иллюстрация Linux графического стека
Mesa/ DRI и Gallium3D имеют разные модели драйверов. Оба имеют много бесплатного и открытого исходного кода.
Возможный пример матрицы при реализации модели драйвера Gallium3D. Благодаря внедрению интерфейса Gallium3D Tracker и интерфейса Gallium3D WinSys требуется всего 18 модулей вместо 36. Каждый модуль WinSys может работать с каждым модулем драйвера устройства Gallium3D и с каждым модулем State Tracker.

Отличия от классических графических драйверов

[ редактировать ]

Gallium3D предоставляет унифицированный API, предоставляющий стандартные аппаратные функции, такие как шейдерные блоки, имеющиеся на современном оборудовании. Таким образом, 3D API, такие как OpenGL 1.x/2.x, OpenGL 3.x, OpenVG , инфраструктура GPGPU или даже Direct3D (как обнаружено на уровне совместимости Wine ), потребуют только одного серверного компонента, называемого трекером состояния. ориентирован на API Gallium3D. Напротив, драйверы устройств DRI в классическом стиле требуют разных серверных частей для каждой аппаратной платформы, а некоторые другие API требуют перевода в OpenGL за счет дублирования кода. [163] [164] [165] Все драйверы устройств поставщиков из-за их проприетарного характера с закрытым исходным кодом написаны таким образом, что означает, что, например, AMD Catalyst реализует как OpenGL , так и Direct3D , а драйверы поставщиков для GeForce имеют свои реализации.

В Gallium3D драйверы ядра Direct Rendering Manager (DRM) будут управлять памятью, а драйверы Direct Rendering Interface (DRI2) будут больше ориентированы на обработку графического процессора. [166] В течение периода перехода от настройки режима пользовательского пространства к настройке режима пространства ядра некоторые драйверы Mesa 3D, такие как драйвер Radeon или драйверы Intel, в конечном итоге стали поддерживать как DRI1, так и DRI2, и использовали DRI2, если он доступен в системе. Gallium3D дополнительно требует уровня поддержки шейдеров, который недоступен на старых картах, таких как, например, ATi r100-r200, поэтому пользователям этих карт необходимо продолжать использовать Mesa 3D с DRI2 для использования 3D.

Инфраструктура вольфрамовых графических шейдеров

[ редактировать ]

Инфраструктура графических шейдеров вольфрама ( TGSI ) — это промежуточное представление , такое как промежуточное представление LLVM или новое стандартное переносимое промежуточное представление (SPIR), которое будет использоваться API Vulkan и OpenCL 2.1. Шейдеры, написанные на языке шейдеров OpenGL, транслируются/компилируются в TGSI, затем производятся оптимизации, а затем шейдеры TGSI компилируются в шейдеры для набора команд используемого графического процессора.

NIR — это новое представление слоев в Mesa с полной поддержкой SPIR-V, которое с 2019 года является основной областью разработки всех новых драйверов с поддержкой OpenGL 4.6.

Использование LLVM

[ редактировать ]
GlassyMesa — это стек компилятора на основе LLVM для шейдеров, написанных на GLSL . Информацию о SSA см. в статье Статическая форма одиночного назначения .

Кроме того, используя модульную структуру Gallium3D, предпринимаются попытки использовать набор компиляторов LLVM и создать модуль для оптимизации кода шейдеров на лету. [167]

Библиотека представляет каждую программу шейдера с помощью расширяемого двоичного промежуточного представления, называемого Tungsten Graphics Shader Infrastructure (TGSI), которое LLVM затем преобразует в GLSL шейдеры , оптимизированные для целевого оборудования.

Принятие

[ редактировать ]

Несколько устройств с открытым исходным кодом графических бесплатных драйверов , которые были написаны или пишутся на основе информации, полученной в результате в «чистой комнате» обратного проектирования , приняли модель драйвера, предоставленную Gallium3D, например nouveau и других ( см. Свободные графические устройства с открытым исходным кодом). драйвер для получения полного списка ). Основная причина может заключаться в том, что модель драйвера Gallium3D уменьшает объем кода, который необходимо написать. [ оригинальное исследование? ] Конечно, будучи лицензированным по лицензии свободного программного обеспечения, этот код может в любое время быть переписан кем угодно для реализации модели драйвера DRI или какой-либо другой.

Первоначальными авторами Gallium3D были Кейт Уитвелл и Брайан Пол из Tungsten Graphics (приобретенной VMware в 2008 году). [168]

По состоянию на осень 2011 года существовало как минимум 10 известных, зрелых и работающих драйверов Gallium3D. [169] [ не удалось пройти проверку ] [ нужна ссылка ] Драйверы с открытым исходным кодом для видеокарт Nvidia под названием команда Nouveau разрабатывает свои драйверы с использованием платформы Gallium3D. [158] [170]

13 июля 2008 г.: Разработка Nouveau ведется исключительно для платформы Gallium. Старый драйвер DRI был удален из основной ветки репозитория Mesa на Freedesktop.org. [171]

11 февраля 2009 г.: Ветка галлия-0,2 была объединена с основной основной веткой Mesa. [172] Разработка ведется на магистральной линии Mesa.

25 февраля 2009 г.: Gallium3D может работать как на ядрах Linux, так и на ядрах FreeBSD. [173]

1 мая 2009 г.: Зак Русин из Tungsten Graphics добавил трекер состояния OpenVG в Mesa 3D, [174] что позволяет масштабируемую векторную графику аппаратно ускорять с помощью любого драйвера на основе Gallium3D.

17 июля 2009 г.: Выпущена Mesa3D 7.5, первая версия, включающая Gallium3D. [175]

10 сентября 2010 г.: В драйвер r600g добавлена ​​первоначальная поддержка графических процессоров Evergreen. [176]

21 сентября 2010 г.: Существуют два драйвера Gallium3D для оборудования ATI, известные как r300g и r600g, для графических процессоров R300-R500 и R600-Evergreen соответственно.

21 сентября 2010 г.: В код были внесены существенные изменения для поддержки Direct3D 10 и 11. [177] Со временем это может дать возможность использовать последние реализации Direct3D в системах Linux.

30 ноября 2011 г.: Драйверы Intel 965g и Cell Gallium были удалены из основной ветки Mesa как неподдерживаемые и сломанные. [178] [179]

30 ноября 2013 г.: Mesa 10 с OpenGL 3.2, 3.3 и OpenCL 1.0+.

18.11.2014: В код были внесены существенные изменения для поддержки Direct3D 9. [180]

15 сентября 2015 г.: Mesa 11 с OpenGL 4.0, 4.1 и OpenCL 1.2 (неполная версия)

15 декабря 2015 г.: Mesa 11.1 Драйвер VIRGL для виртуальных машин с OpenGL 3.3

08.07.2016: Mesa 12 с OpenGL 4.2, 4.3 и Vulkan 1.0 (Intel ANV и AMD RADV)

01.11.2016: Mesa 13 с OpenGL 4.4 и OpenGL ES 3.2

13 февраля 2017 г.: Mesa 17.0 с OpenGL 4.5 и драйвер freedreno с OpenGL 3.0 и 3.1.

10 мая 2017 г.: Mesa 17.1 OpenGL 4.2+ для Intel Ivy Bridge (больше, чем драйвер Intel для Windows, OpenGL 3.3+ для Intel Open SWR Rasterizer (важно для кластерного компьютера для масштабного моделирования)

08.12.2017: Драйвер AMD Vulkan Mesa 17.3 RADV полностью совместим с тестом Khronos для Vulkan 1.0.

18 мая 2018 г.: Mesa 18.1 с Vulkan 1.1 (Intel ANV и AMD RADV)

07.09.2018: Mesa 18.2 с OpenGL 4.3 для программного драйвера VIRGL (важно для виртуальных машин в облачном кластерном компьютере), OpenGL ES 3.1 для Freedreno с Adreno A5xx

11 июня 2019 г.: выпущена Mesa 19.1 с графическим драйвером Intel следующего поколения Iris для iGPU поколения 8+. [181]

11 декабря 2019 г.: Mesa 19.3 выпустила OpenGL 4.6 с Intel i965 поколения 7+ и опциональной Iris Gen 8+.

18 марта 2020 г.: Mesa 20.0 выпустила OpenGL 4.6 с AMD GCN и Vulkan 1.2 для Intel.

27 мая 2020 г.: Mesa 20.1 выпустила поддержку векторизации NIR и поддержку общей виртуальной памяти для OpenCL в Clover.

30.11.2020: Mesa 20.3 полная поддержка OpenCL 1.2 в Clover [41]

11 марта 2021 г.: Первоначальная поддержка «D3D12» в Mesa 21.0: Direct 3D 12 для WSL2 в Windows 10 с OpenGL 3.3+, ARM Freedreno: OpenGL 3.3+.

05.05.2021: Mesa 21.1 первоначальная поддержка драйвера Google VirtIO GPU «Venus» с Vulkan 1.2+; Zink: OpenGL 4.6+, OpenGL ES 3.1+; Qualcomm Turnip, Lavapipe: Vulkan 1.1+

04.08.2021: Mesa 21.2 первоначальная поддержка нового драйвера Intel Crocus OpenGL 4.6 на основе Gallium3D для Intel Sandy Bridge для Haswell для старого i965, драйвер Vulkan panVK для ARM Panfrost

9 марта 2022 г.: Mesa 22.0 полная поддержка Vulkan 1.3 от Intel Anvil и AMD RADV.

10 мая 2023 г.: Mesa 23.1 OpenCL с Rust: доступно оборудование RustiCL для AMD GCN (подробнее об аппаратном обеспечении) [182]

30 сентября 2023 г.: Mesa 23.2 с Apple Asahi OpenGL 3.1 и OpenGL ES 3.0, RADV поддерживает трассировку лучей в AMD RDNA 2 и 3, поддержка декодирования Intel Anvil Vulkan H.265. [183]

Производительность

[ редактировать ]

Инициатор проекта Брайан Пол был любителем графики. Он подумал, что было бы интересно реализовать простую библиотеку 3D-графики с использованием OpenGL API, которую он затем мог бы использовать вместо VOGL (очень обычная GL Like Library). [184] Начиная с 1993 года, он посвятил восемнадцать месяцев частичной разработке, прежде чем в феврале 1995 года выпустил программное обеспечение в Интернет. [185] Программное обеспечение было хорошо принято, и люди начали вносить свой вклад в его разработку. Mesa начала с рендеринга всей компьютерной 3D-графики на процессоре . Несмотря на это, внутренняя архитектура Mesa была спроектирована так, чтобы ее можно было подключить к ускоренному графическому процессору 3D-рендерингу. На этом первом этапе рендеринг выполнялся косвенно на сервере отображения , что приводило к некоторым накладным расходам и заметному отставанию скорости от теоретического максимума. Diamond Monster 3D , использующий чипсет Voodoo Graphics , был одним из первых аппаратных 3D-устройств, поддерживаемых Mesa.

Первая настоящая поддержка графического оборудования была добавлена ​​в Mesa в 1997 году на основе Glide API для новых на тот момент 3dfx Voodoo I/II видеокарт и их преемников. [129] Основной проблемой использования Glide в качестве слоя ускорения была привычка Glide работать в полноэкранном режиме, что подходило только для компьютерных игр. Кроме того, Glide взял блокировку экранной памяти, и, таким образом, сервер отображения был заблокирован для выполнения любых других задач графического интерфейса. [186]

См. также

[ редактировать ]
  1. ^ Маршалл, Дэвид (16 декабря 2008 г.). «Приобретение VMware компании Tungsten Graphics в конце года» . Инфомир . Проверено 6 августа 2011 г.
  2. ^ Эрик Энгестром (31 июля 2024 г.). «[ОБЪЯВЛЕНИЕ] Меса 24.1.5» . Проверено 31 июля 2024 г.
  3. ^ «Улучшение поддержки OpenGL для графических драйверов Linux — Mesa» . Индиегого . 11 декабря 2013 года . Проверено 21 января 2015 г.
  4. ^ «AMD изучает новую стратегию драйверов для Linux» . 22 марта 2014 года . Проверено 23 марта 2014 г.
  5. ^ «Поддержка Direct3D 9 выпущена для Linux через Gallium3D, запуск игр — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  6. ^ «mesa/mesa — Библиотека 3D-графики Mesa» . Проверено 2 ноября 2016 г. .
  7. ^ «Матрица OpenGL и Mesa» . 25 марта 2015 года . Проверено 29 марта 2015 г.
  8. ^ «Mesa 11.0 разветвлена, марш релизов начинается» . 22 августа 2015 года . Проверено 22 августа 2015 г.
  9. ^ Jump up to: а б «Драйвер RADV Radeon Vulkan представлен на рассмотрение для включения в Mesa — Phoronix» . Архивировано из оригинала 4 ноября 2016 года . Проверено 3 ноября 2016 г.
  10. ^ Jump up to: а б «Mesa 17.0.0 официально выпущена» . Фороникс . 13 февраля 2017 года . Проверено 13 февраля 2017 г.
  11. ^ «стол/таблица — библиотека 3D-графики Mesa» . Cgit.freedesktop.org . Проверено 1 августа 2018 г.
  12. ^ «Большие изменения и улучшения Mesa 17.0 — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  13. ^ «стол/таблица — библиотека 3D-графики Mesa» . Cgit.freedesktop.org . Проверено 1 августа 2018 г.
  14. ^ «Программа» (PDF) . www.x.org . 2016.
  15. ^ «стол/таблица — библиотека 3D-графики Mesa» . Cgit.freedesktop.org . Проверено 1 августа 2018 г.
  16. ^ «Взгляд на огромный прирост производительности с помощью Nouveau Mesa 17.0-devel на Maxwell — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  17. ^ «Тесты соответствия OpenGL/OpenGL ES с открытым исходным кодом Khronos — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  18. ^ «Главные возможности Mesa 17.1: Vega, шейдерный кэш RadeonSI, развивающийся Vulkan, новые расширения OpenGL — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  19. ^ «Примечания к выпуску Месы» . Mesa3d.org . Проверено 1 августа 2018 г.
  20. ^ «Матрица OpenGL и Mesa» . mesamatrix.net . Проверено 31 июля 2016 г.
  21. ^ «Список мероприятий» (PDF) . www.x.org .
  22. ^ «Функции Mesa 17.3 — обновления Vulkan, лучшая производительность — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  23. ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р «Календарь релизов» . Mesa3d.org . Проверено 1 августа 2018 г.
  24. ^ «Функции Mesa 18.0 включают множество улучшений OpenGL/Vulkan, кэш шейдеров Intel и дополнительные возможности — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  25. ^ Jump up to: а б «Скоро выйдет Mesa 18.2 со многими улучшениями драйверов OpenGL / Vulkan — Phoronix» . www.phoronix.com .
  26. ^ «Новые блестящие возможности Mesa 18.3 для графических драйверов Intel / Radeon с открытым исходным кодом — Phoronix» . www.phoronix.com .
  27. ^ «Mesa добилась огромного прогресса в 2018 году в области драйверов Vulkan / OpenGL с открытым исходным кодом — Phoronix» . www.phoronix.com .
  28. ^ «Новые функции Mesa 19.0: дополнения Vulkan, FreeSync, Soft FP64 и многое другое — Phoronix» .
  29. ^ «Меса 18.2 против 18.3 против 19.0 Январские тесты для RadeonSI/RADV — Phoronix» .
  30. ^ «Запуск серверной части RadeonSI NIR с помощью Mesa 19.1 Git — Phoronix» .
  31. ^ «Драйвер Intel Iris Gallium3D теперь имеет лучшую поддержку профиля совместимости OpenGL — Phoronix» .
  32. ^ «В Mesa 19.3 представлено множество улучшений драйвера OpenGL + Vulkan с открытым исходным кодом — Phoronix» .
  33. ^ «Mesa 20.0-rc1 выпущена с Intel Gallium3D по умолчанию, OpenGL 4.6 для RadeonSI, Vulkan 1.2 — Phoronix» .
  34. ^ «Выпущена Mesa 20.0 с большими улучшениями для Intel, AMD Radeon Vulkan/OpenGL — Phoronix» .
  35. ^ Jump up to: а б «Возможности Mesa 20.1 включают значительные улучшения для графических драйверов Intel и Radeon с открытым исходным кодом — Phoronix» .
  36. ^ «Zink теперь представляет собой OpenGL 3.0 Complete для Generic GL поверх Vulkan — Phoronix» .
  37. ^ «Разработка Mesa 20.2 завершается после появления множества новых функций — Phoronix» .
  38. ^ «Нуво в Mesa 20.2 поддерживает HMM, теперь поддерживается OpenCL SVM — Phoronix» .
  39. ^ «Реализация программного обеспечения Vulkan от Mesa, теперь известная как Lavapipe» . Фороникс .
  40. ^ «Разработчики V3DV излагают планы по внедрению драйвера Raspberry Pi 4 Vulkan в Mesa — Phoronix» .
  41. ^ Jump up to: а б с «Поддержка OpenCL 1.2 объединена с Gallium3D Clover от Mesa, пока ведется работа над OpenCL 3.0 — Phoronix» .
  42. ^ «Zink в Mesa 20.3 теперь поддерживает OpenGL 3.3 и может запускать Blender с помощью OpenGL-on-Vulkan — Phoronix» .
  43. ^ «OpenGL 4.5 теперь доступен для LLVMpipe с Mesa 20.3 и будет портирован обратно для 20.2 — Phoronix» .
  44. ^ «VALLIUM объединен с Mesa 20.3 как интерфейс Vulkan для Gallium3D» . Фороникс .
  45. ^ Jump up to: а б «Mesa 21.0 объединяет драйвер Direct3D 12 Gallium3D — Phoronix» .
  46. ^ https://xdc2020.x.org/event/9/contributions/621/attachments/701/1297/XDC_-_Mesa_for_Mapping_Layers.pdf . Архивировано 30 октября 2020 г. на Wayback Machine. [ пустой URL PDF ]
  47. ^ «Microsoft + Collabora работают над сопоставлением OpenGL/OpenCL с DirectX 12 — Phoronix» .
  48. ^ «Mesa теперь в 2–5 раз быстрее для SPECViewPerf после оптимизации OpenGL — Phoronix» .
  49. ^ «В Mesa 21.0 появилось много новых функций, специально для графики Radeon с открытым исходным кодом — Phoronix» .
  50. ^ «Выпущена версия Mesa 21.1-rc1 с оптимизацией RADV, более быстрым Zink и множеством других новых функций — Phoronix» .
  51. ^ «Меса%2021.1 — Фороникс» .
  52. ^ Jump up to: а б с «Драйвер Vulkan VirtIO-GPU Google «Venus» объединен с Mesa 21.1 — Phoronix» .
  53. ^ «Выпущена Mesa 21.2 с новым драйвером Intel Crocus, PanVK, ранним кодом M1 — Phoronix» .
  54. ^ «Выдвинуто предложение об исключении классических драйверов OpenGL Mesa из основной линейки в этом году — Phoronix» .
  55. ^ «Crocus Gallium3D приближается к Mainline Mesa для Gallium3D i965 благодаря Haswell Graphics — Phoronix» .
  56. ^ «Янтарная ветвь — последняя документация библиотеки 3D-графики Mesa» .
  57. ^ «Выпущена версия Mesa 22.0-rc1 со многими функциями драйверов графических процессоров Radeon и Intel Linux, Vulkan 1.3» .
  58. ^ «Дюжина» Mesa близка к предоставлению Vulkan вместо Direct3D 12» .
  59. ^ «Рустикл компании Mesa достиг официального соответствия OpenCL 3.0» .
  60. ^ «Реализация Rusticl OpenCL от Mesa может превзойти вычислительный стек ROCm от Radeon» .
  61. ^ «Разработка функций Mesa 23.0 заканчивается множеством дополнений к Vulkan» .
  62. ^ «Выпущена версия Mesa 23.0 с множеством изменений для графических драйверов Radeon и Intel с открытым исходным кодом» .
  63. ^ «Драйвер Microsoft DZN Mesa уже доступен в Vulkan 1.2» .
  64. ^ «Mesa 23.1 выпущена с RadeonSI Rusticl-OpenCL, RADV GPL» .
  65. ^ «В Mesa 23.2 Virgl реализована поддержка OpenGL 4.6 внутри виртуальных машин» .
  66. ^ «Mesa 23.2 получает изменения Asahi AGX Gallium3D для OpenGL 3.1 + GLES 3.0» .
  67. ^ «Microsoft включает поддержку OpenGL 4.6 вместо Direct3D 12» .
  68. ^ «Примечания к выпуску — новейшая документация библиотеки 3D-графики Mesa» .
  69. ^ «Выпущена Меса 23.1 — Фороникс» .
  70. ^ Ларабель, Майкл (4 марта 2015 г.). «Поддержка OpenVG исключена из Gallium3D» . Фороникс . Проверено 11 июля 2015 г.
  71. ^ «St/Vega: Удалить. (3acd7a34) · Зафиксировать · Mesa / Mesa · GitLab» . 3 марта 2015 г.
  72. ^ «последние патчи для трекера состояния «девятки»» . Cgit.freedesktop.org . 4 февраля 2016 г.
  73. ^ Ларабель, Майкл (14 декабря 2014 г.). «Mesa 10.4 официально выпущена с трекером состояния Direct3D 9» . Фороникс . Проверено 11 июля 2015 г.
  74. ^ «Выпущена Mesa 23.0 — Фороникс» .
  75. ^ «Выпущена Меса 22.3 — Фороникс» .
  76. ^ «Выпущена Меса 22.2 — Фороникс» .
  77. ^ «Выпущена Меса 22.1 — Фороникс» .
  78. ^ «Выпущена Mesa 22.0 — Фороникс» .
  79. ^ «Выпущена Меса 21.3 — Фороникс» .
  80. ^ «Выпущена Mesa 21.2 с новым драйвером Intel Crocus, PanVK, ранним кодом M1 — Phoronix» .
  81. ^ «Выпущена Mesa 21.1 с шейдингом переменной скорости RADV и другими улучшениями Intel Vulkan — Phoronix» .
  82. ^ «Выпущена версия Mesa 21.0 с многочисленными улучшениями RADV, новыми расширениями Vulkan и множеством исправлений — Phoronix» .
  83. ^ «Выпущена версия Mesa 20.3 с большими улучшениями для графических драйверов с открытым исходным кодом — Phoronix» .
  84. ^ «Выпущена версия Mesa 20.2.2 со случайным набором исправлений — Phoronix» .
  85. ^ «Бенчмарки RadeonSI NIR демонстрируют значительный прогресс с Mesa 20.0 — Phoronix» .
  86. ^ «Выпущена Mesa 19.3-RC1 с OpenGL 4.6 для Intel, множеством улучшений драйвера Vulkan — Phoronix» .
  87. ^ «В Mesa 19.3 представлено множество улучшений драйвера OpenGL + Vulkan с открытым исходным кодом — Phoronix» .
  88. ^ «Сегодня должна выйти Mesa 18.0 со многими улучшениями драйверов Vulkan/OpenGL — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  89. ^ «ГаллийКомпьютер» . Dri.freedesktop.org . Проверено 24 января 2019 г.
  90. ^ «Обновление статуса клевера» (PDF) . Проверено 27 марта 2020 г.
  91. ^ «[Mesa-announce] mesa 17.0.0» . 13 февраля 2017 года . Проверено 13 февраля 2017 г.
  92. ^ «[Mesa-announce] mesa 13.0.0» . Ноябрь 2016 года . Проверено 2 ноября 2016 г. .
  93. ^ Jump up to: а б «Выпущена Mesa 12.0 с поддержкой OpenGL 4.3, Intel Vulkan и многими другими функциями» . 8 июля 2016 года . Проверено 8 июля 2016 г.
  94. ^ «[Mesa-announce] Mesa 11.2.0» . 4 апреля 2016 года . Проверено 4 апреля 2016 г.
  95. ^ «[Mesa-announce] Mesa 11.1.0» . 15 декабря 2015 года . Проверено 15 декабря 2015 г.
  96. ^ «[Mesa-announce] Mesa 11.0.0» . 12 сентября 2015 г. Проверено 26 сентября 2015 г.
  97. ^ «[Mesa-announce] Mesa 10.6.0» . 15 июня 2015 года . Проверено 15 июня 2015 г.
  98. ^ Ларабель, Майкл (26 октября 2013 г.). «Функции, которые можно найти в Mesa 10.0» . Фороникс .
  99. ^ «[Mesa-announce] Mesa 10.5.0» . 7 марта 2015 года . Проверено 7 марта 2015 г.
  100. ^ «[Mesa-announce] Выпущена Mesa 10.4.0» . 14 декабря 2014 года . Проверено 7 марта 2015 г.
  101. ^ «[Mesa-announce] Выпущена Mesa 10.3» . 19 сентября 2014 года . Проверено 7 марта 2015 г.
  102. ^ «[Mesa-announce] Выпущена Mesa 10.2» . 7 июня 2014 года . Проверено 7 марта 2015 г.
  103. ^ «[Mesa-announce] Выпущена Mesa 10.1» . 5 марта 2014 года . Проверено 7 марта 2015 г.
  104. ^ «[Mesa-announce] Выпущена Mesa 10.0» . Декабрь 2013 года . Проверено 7 марта 2015 г.
  105. ^ «Выпущен Vulkan 1.3 с динамическим рендерингом в ядре, новое руководство по развитию современных графических процессоров» .
  106. ^ «Программа» (PDF) . www.x.org .
  107. ^ «Драйвер Radeon Vulkan добавлен в Mesa, свежие тесты Radeon Vulkan и OpenGL + AMDGPU-PRO — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  108. ^ Jump up to: а б «Vulkan Virgl начал поддержку этого графического/вычислительного API внутри виртуальных машин — Phoronix» . www.phoronix.com .
  109. ^ «Vulkan на базе процессора Lavapipe, портированный на Windows — Phoronix» .
  110. ^ «В драйвер Qualcomm «TURNIP» Vulkan с открытым исходным кодом добавлена ​​важная функция производительности — Phoronix» .
  111. ^ «Драйвер TURNIP Vulkan запущен и работает на Qualcomm KGSL — Phoronix» .
  112. ^ «Драйвер Raspberry Pi 4 Vulkan «V3DV» объединен с Mesa 20.3 — Phoronix» .
  113. ^ «PanVK пока отказывается от рекламы Vulkan 1.1» .
  114. ^ https://www.phoronix.com/news/Micorosft-Dzn-99p-Vulkan
  115. ^ https://www.phoronix.com/news/Volcano-On-Direct3D-12-Dzn-Merge
  116. ^ «Внедрение явного ограждения Android в основную ветку» . LWN.net . 5 октября 2016 г.
  117. ^ «libgbm в репозиториях Debian» . Packages.debian.org .
  118. ^ «Включение альтернативных оконных систем с реализацией графического драйвера, отличного от Mesa» . Х.орг .
  119. ^ «NVIDIA хочет получить отзывы о своем проекте распределителя памяти устройства» . Фороникс .
  120. ^ «Новое видеоускорение» . сайт freedesktop.org .
  121. ^ «Матрица функций Radeon» . сайт freedesktop.org .
  122. ^ «Fedora Linux отключает поддержку Mesa H.264/H.265/VC1 VA-API по юридическим соображениям» . Фороникс . Проверено 1 октября 2022 г.
  123. ^ Торал, Яго (8 августа 2014 г.). «Погружение в Месу» . Проверено 19 мая 2016 г.
  124. ^ «Страница состояния инфраструктуры прямого рендеринга» . сайт freedesktop.org .
  125. ^ «Как улучшить игровую производительность на вашем компьютере с Linux — APC» . Apcmag.com . 25 июля 2013 г. Архивировано из оригинала 25 января 2019 г. . Проверено 1 августа 2018 г.
  126. ^ «Linux: драйверы Mesa, Gallium3D, Nouveau и NVIDIA, тест OpenGL (GTX 280, GTX 480, GTX 580) – Geeks3D» . Geeks3d.com . 10 января 2012 года . Проверено 1 августа 2018 г.
  127. ^ «Драйвер Nouveau работает намного медленнее, чем официальный драйвер NVIDIA — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  128. ^ «Intel/NVIDIA/AMD конкурируют за производительность драйверов графических процессоров Linux с открытым/закрытым исходным кодом — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  129. ^ Jump up to: а б с Пол, Брайан (10 августа 2000 г.). «Введение в инфраструктуру прямого рендеринга» . Dri.sourceforge.net . Проверено 25 января 2012 г.
  130. ^ «ДРИ2» . X.org. Архивировано из оригинала 16 апреля 2013 года . Проверено 25 января 2012 г.
  131. ^ «DRI3 и настоящее время [LWN.net]» . lwn.net . Проверено 1 августа 2018 г.
  132. ^ «[ИСПРАВЛЕНИЕ 0/6] Добавьте поддержку DRI3000 в драйверы ядра и i965» . Lists.freedesktop.org. 31 октября 2013 года . Проверено 1 августа 2018 г.
  133. ^ «xorg-x11-drv-intel-2.99.917-19.20151206.fc23 (повторно) включил dri3 по умолчанию — kde — Списки рассылки Fedora» . lists.fedoraproject.org . Проверено 3 декабря 2016 г.
  134. ^ «Radeon-AMDGPU-1.19-Обновления» . Google.de . Проверено 3 декабря 2016 г.
  135. ^ «LLVMpipe: OpenGL с Gallium3D на вашем процессоре» . Фороникс.com . 30 апреля 2010 г. Проверено 4 ноября 2014 г.
  136. ^ "llvmpipe" . mesa3d.org . Проверено 8 июня 2015 г.
  137. ^ «ОпенСВР» . openswr.org . Проверено 1 августа 2018 г.
  138. ^ «Mesamatrix: матрица OpenGL против Mesa» . mesamatrix.net . Проверено 1 августа 2018 г.
  139. ^ «ОпенСВР» . openswr.org . Проверено 1 августа 2018 г.
  140. ^ «Mesa (Master): Virgl: Добавить драйвер для virtio-GPU 3D (V2)» . Архивировано из оригинала 28 августа 2018 года . Проверено 28 августа 2018 г.
  141. ^ «Отслеживание возможностей VirGL OpenGL от Mesa — Phoronix» . www.phoronix.com .
  142. ^ «VirGL от Mesa теперь имеет поддержку OpenGL 4.2 для предоставления гостевых виртуальных машин — Phoronix» . www.phoronix.com .
  143. ^ «Текущая производительность Virgl3D, планы на будущее — Phoronix» . www.phoronix.com .
  144. ^ «Что нового в виртуальном мире?» (PDF) . Архивировано (PDF) из оригинала 1 октября 2018 г. Проверено 19 ноября 2023 г.
  145. ^ https://archive.fosdem.org/2019/schedule/event/virtual_gpu/attachments/slides/3353/export/events/attachments/virtual_gpu/slides/3353/Virgl_Presentation_FOSDEM2019.pdf [ пустой URL PDF ]
  146. ^ https://docs.mesa3d.org/drivers/virgl.html.
  147. ^ https://docs.mesa3d.org/drivers/venus.html.
  148. ^ «Мегадрайверы ДРИ» . Х.орг . 25 сентября 2013 г.
  149. ^ «Трекеры состояния VDPAU и XvMC теперь являются отдельными библиотеками» . Фороникс.com . 23 июня 2014 г.
  150. ^ «Введение — документация NIR 0.0.1» .
  151. ^ «NIR: новый компилятор IR для Mesa» .
  152. ^ «Mesa готовится отказаться от старого GLSL-To-TGSI — удаление большого количества кода, выигрыш в производительности и исправления» .
  153. ^ «Построить файл конфигурации» . cgit.freedesktop.org . Документация по галлию.
  154. ^ Фонсека, Хосе (27 апреля 2008 г.). «Gallium3D: Введение» . Проверено 20 июня 2014 г.
  155. ^ Фонсека, Хосе. «MESA3D.org: Введение» . Проверено 28 октября 2016 г.
  156. ^ «Gallium3D теперь в основной кодовой базе Mesa!» . Фороникс . 11 февраля 2009 года . Проверено 26 октября 2010 г.
  157. ^ «Государство Нуво, часть 2» . LWN.net . 26 февраля 2008 года . Проверено 7 марта 2008 г.
  158. ^ Jump up to: а б «Нуво Компаньон 36» . Nouveau.freedesktop.org . 7 марта 2008 г. Архивировано из оригинала 7 марта 2013 г. . Проверено 1 апреля 2008 г.
  159. ^ «Поддержка ATI R300 Gallium3D DRI «завершена» » . Фороникс . 9 ноября 2009 года . Проверено 15 ноября 2010 г.
  160. ^ «Драйвер Radeon «R600g» Gallium3D объединен с [Mesa] Master» . Фороникс . 27 мая 2010 г. Проверено 26 октября 2010 г.
  161. ^ «X.Org Wiki GalliumStatus» . Хорг . 22 сентября 2010 г. Проверено 7 декабря 2010 г.
  162. ^ «iris: добавить новый экспериментальный драйвер Gallium для графических процессоров Intel Gen8+ (!283) · Запросы на слияние · Mesa / mesa» . ГитЛаб . 20 февраля 2019 г. Проверено 21 сентября 2019 г.
  163. ^ «ТГ-Галлий3D» . Вольфрамовая графика. Архивировано из оригинала 3 мая 2008 года . Проверено 1 апреля 2008 г.
  164. ^ Русин, Зак (6 февраля 2008 г.). «ГПГПУ» . Проверено 1 апреля 2008 г.
  165. ^ Русин, Зак (7 февраля 2008 г.). «OpenVG и ускорение 2D» . Проверено 1 апреля 2008 г.
  166. ^ «ДРИ2» . 4 октября 2007 г. Архивировано из оригинала 4 июля 2008 г. Проверено 1 апреля 2008 г.
  167. ^ Русин, Зак (2 ноября 2007 г.). «Галлий3D LLVM» . Проверено 1 апреля 2008 г.
  168. ^ Маршалл, Дэвид (16 декабря 2008 г.). «Приобретение VMware компании Tungsten Graphics в конце года» . ИнфоМир.
  169. ^ «Галлий» . Freedesktop.org . 2 ноября 2011 года . Проверено 24 августа 2012 г.
  170. ^ «Нуво Компаньон 37» . Nouveau.freedesktop.org . 21 марта 2008 г. Архивировано из оригинала 8 февраля 2012 г. Проверено 1 апреля 2008 г.
  171. ^ "nouveau: попрощайтесь со старым драйвером DRI... (cgit на FDO)" . Cgit.freedesktop.org . 13 июля 2008 г.
  172. ^ «Gallium3D теперь в основной кодовой базе Mesa!» . Фороникс.com . 11 февраля 2009 г.
  173. ^ Ларабель, Майкл (25 февраля 2009 г.). «Gallium3D, EGL теперь можно создавать на FreeBSD» . Фороникс .
  174. ^ «Отслеживание состояния OpenVG находится в Mesa 3D» . Sourceforge.net . 1 мая 2009 года.
  175. ^ «Примечания к выпуску Mesa 7.5 / 17 июля 2009 г.» . Mesa3d.org . 17 июля 2009 года. Архивировано из оригинала 13 июня 2010 года . Проверено 12 сентября 2017 г.
  176. ^ «r600g: добавить первоначальную постоянную поддержку (cgit на FDO)» . Cgit.freedesktop.org . 10 сентября 2010 г.
  177. ^ «d3d1x: добавлен новый трекер состояния Direct3D 10/11 COM для Gallium» . Cgit.freedesktop.org . 21 сентября 2010 г.
  178. ^ Ларабель, Майкл (30 ноября 2011 г.). «Драйвер Gallium3D Intel 965 удален» . Фороникс . п. 1 . Проверено 1 декабря 2011 г.
  179. ^ Ларабель, Майкл (30 ноября 2011 г.). «Драйвер ячейки Gallium3D тоже удален» . Фороникс . п. 1 . Проверено 1 декабря 2011 г.
  180. ^ «девять: добавить девятый трекер состояния для Direct3D9 (v3)» . Cgit.freedesktop.org . 18 ноября 2014 г.
  181. ^ «Выпущена Mesa 19.1 с экспериментальным Intel Gallium3D, а также с другими новыми драйверами GL/VLK — Phoronix» . www.phoronix.com . Проверено 21 сентября 2019 г.
  182. ^ «Mesa 23.1 выпущена с RadeonSI Rusticl-OpenCL, RADV GPL» .
  183. ^ https://www.phoronix.com/news/Mesa-23.2-Branched
  184. ^ «Введение в Месу» . Команда Меса . Архивировано из оригинала 4 мая 2015 года . Проверено 8 июня 2015 г.
  185. ^ «История проекта» . Документация Мезы . Проверено 11 марта 2021 г.
  186. ^ «Какая связь между Glide и DRI?» . dri.freedesktop.org . Проверено 25 января 2012 г.
[ редактировать ]
[ редактировать ]
Различные уровни в Linux, также показывающие разделение между пользовательской областью и пространством ядра.
Пользовательский режим Пользовательские приложения bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
Компоненты системы демон инициализации :
OpenRC , runit , systemd ...
Системные демоны :
polkitd , smbd , sshd , udevd ...
Оконный менеджер :
X11 , Wayland , SurfaceFlinger (Android)
Графика :
Меса , катализатор AMD , ...
Другие библиотеки:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
Стандартная библиотека C fopen, execv, malloc, memcpy, localtime, pthread_create... (до 2000 подпрограмм )
glibc стремится быть быстрым, musl стремится быть легким, uClibc нацелен на встраиваемые системы, bionic написан для Android и т. д. Все стремятся быть POSIX / SUS -совместимыми.
Режим ядра Ядро Linux stat, splice, dup, read, open, ioctl, write, mmap, close, exitи т. д. (около 380 системных вызовов)
ядра Linux Интерфейс системных вызовов (SCI) должен быть POSIX / SUS -совместимым. [1]
планирования процессов Подсистема IPC Подсистема управления памятью Подсистема виртуальных файлов Подсистема Сетевая подсистема
Другие компоненты: ALSA , DRI , evdev , klibc , LVM , устройство отображения устройств , сетевой планировщик Linux , Netfilter.
Модули безопасности Linux : SELinux , TOMOYO , AppArmor , Smack
Аппаратное обеспечение ( ЦП , основная память , устройства хранения данных и т. д.)
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 30e3d03ec18dcc97cbd738b1a6fcf1ad__1721809020
URL1:https://arc.ask3.ru/arc/aa/30/ad/30e3d03ec18dcc97cbd738b1a6fcf1ad.html
Заголовок, (Title) документа по адресу, URL1:
Mesa (computer graphics) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)