stringtranslate.com

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

Mesa , также называемая Mesa3D и библиотекой 3D-графики Mesa , представляет собой реализацию 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], визуализированную на mesamatrix.net . 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 (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. Lavapipe (первоначально называвшийся Vallium [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] Для Zink доступны OpenGL 4.6+ и OpenGL ES 3.1+. 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 рендеринга

Вулкан

Группа 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] Совместимость с Khronos-Test появилась в версии 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.net .

Существуют драйверы устройств для карт 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] Венера поддерживает 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 имеют очень мало общего с тем, что обычно называют драйвером устройства . Есть несколько отличий:

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

Одной из целей 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]

ЛЛВМ ИК

UMD 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

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

Матрица функций представлена ​​на mesamatrix.net .

Разработка 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), которое будет использоваться Vulkan API и 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] Разработка ведется на магистральной линии Меса.

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

01 мая 2009 г.: Зак Русин из Tungsten Graphics добавил в Mesa 3D трекер состояния OpenVG , [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 ноября 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: Драйвер Mesa 17.3 AMD Vulkan 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

09.03.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-графики с использованием API OpenGL, которую он затем мог бы использовать вместо 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. ^ Эрик Энгестром (28 февраля 2024 г.). «[ОБЪЯВЛЕНИЕ] Меса 24.0.2» . Проверено 29 февраля 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. ^ ab «Драйвер RADV Radeon Vulkan отправлен на проверку для включения в Mesa - Phoronix» . Архивировано из оригинала 4 ноября 2016 года . Проверено 3 ноября 2016 г.
  10. ^ ab «Mesa 17.0.0 официально выпущена». Фороникс . 13 февраля 2017 года . Проверено 13 февраля 2017 г.
  11. ^ "mesa/mesa - Библиотека 3D-графики Mesa" . Cgit.freedesktop.org . Проверено 1 августа 2018 г.
  12. ^ «Большие изменения, улучшения Mesa 17.0 - Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  13. ^ "mesa/mesa - Библиотека 3D-графики Mesa" . Cgit.freedesktop.org . Проверено 1 августа 2018 г.
  14. ^ «Программа» (PDF) . www.x.org . 2016.
  15. ^ "mesa/mesa - Библиотека 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. ^ abcdefghijklmnopqr «Календарь выпусков». Mesa3d.org . Проверено 1 августа 2018 г.
  24. ^ «Функции Mesa 18.0 включают множество улучшений OpenGL/Vulkan, кэш шейдеров Intel и дополнительные возможности — Phoronix» . Фороникс.com . Проверено 1 августа 2018 г.
  25. ^ ab «Скоро выйдет 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. ^ ab «Функции 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. ^ abc «Поддержка 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. ^ ab «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, Faster Zink и многими другими новыми функциями - Phoronix» .
  51. ^ "Меса% 2021.1 - Фороникс" .
  52. ^ abc «Драйвер 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 приближается к основной платформе для 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 может превзойти вычислительный стек Radeon ROCm» .
  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. ^ «Выпущена Mesa 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. ^ ab «Выпущена Mesa 12.0 с поддержкой OpenGL 4.3, Intel Vulkan и многими другими функциями» . 8 июля 2016 года . Проверено 8 июля 2016 г.
  94. ^ "[Mesa-анонс] Mesa 11.2.0" . 4 апреля 2016 года . Проверено 4 апреля 2016 г.
  95. ^ "[Mesa-анонс] Mesa 11.1.0" . 15 декабря 2015 года . Проверено 15 декабря 2015 г.
  96. ^ "[Mesa-анонс] Mesa 11.0.0" . 12 сентября 2015 г. Проверено 26 сентября 2015 г.
  97. ^ "[Mesa-анонс] Mesa 10.6.0" . 15 июня 2015 года . Проверено 15 июня 2015 г.
  98. Ларабель, Майкл (26 октября 2013 г.). «Функции, которые можно найти в Mesa 10.0». Фороникс .
  99. ^ "[Mesa-анонс] Mesa 10.5.0" . 7 марта 2015 года . Проверено 7 марта 2015 г.
  100. ^ «[Объявление Mesa] Mesa 10.4.0 выпущено» . 14 декабря 2014 года . Проверено 7 марта 2015 г.
  101. ^ «[Объявление Mesa] Mesa 10.3 выпущено» . 19 сентября 2014 года . Проверено 7 марта 2015 г.
  102. ^ "[Mesa-анонс] Выпущена Mesa 10.2" . 7 июня 2014 года . Проверено 7 марта 2015 г.
  103. ^ «[Объявление Mesa] Mesa 10.1 выпущено» . 5 марта 2014 года . Проверено 7 марта 2015 г.
  104. ^ «[Объявление Mesa] 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. ^ ab «Vulkan Virgl начал поддержку этого графического / вычислительного API внутри виртуальных машин - Phoronix» . www.phoronix.com .
  109. ^ «Vulkan на базе процессора Lavapipe, портированный на Windows — Phoronix» .
  110. ^ «Драйвер Qualcomm «TURNIP» Vulkan с открытым исходным кодом добавляет важную функцию производительности - Phoronix» .
  111. ^ "Драйвер TURNIP Vulkan запущен и работает на KGSL Qualcomm - 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/Vulkan-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. ^ abc Пол, Брайан (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. Ссылки mesa3d.org . Проверено 8 июня 2015 г.
  137. ^ "ОпенSWR". openswr.org . Проверено 1 августа 2018 г.
  138. ^ «Mesamatrix: матрица OpenGL против Mesa» . mesamatrix.net . Проверено 1 августа 2018 г.
  139. ^ "ОпенSWR". 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. ^ "Мегадрайверы DRI" . Х.орг . 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. ^ ab "Nouveau Companion 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. ^ «радужка: добавьте новый экспериментальный драйвер Gallium для графических процессоров Intel Gen8+ (!283) · Запросы на слияние · Mesa / mesa». ГитЛаб . 20 февраля 2019 г. Проверено 21 сентября 2019 г.
  163. ^ "TG-Gallium3D". Вольфрамовая графика. Архивировано из оригинала 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. ^ «Нуво: попрощайтесь со старым драйвером 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: добавлен новый трекер состояния COM Direct3D 10/11 для 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 г.

Внешние ссылки

Внешние ссылки для Gallium3D

  1. ^ "README Руководство администратора" . Git-репозитории Kernel.org .