stringtranslate.com

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

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 Glamor или Wayland 's Weston ) используют OpenGL/ EGL ; поэтому вся графика обычно проходит через Mesa.

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

Обзор

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

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

Бесплатные реализации Wayland полагаются на реализацию Mesa EGL . Специальная библиотека libwayland-EGL , написанная для обеспечения доступа к буферу кадров , должна была устареть к выпуску EGL 1.5. На GDC 2014 AMD изучала изменение стратегии в сторону использования DRM вместо своего внутреннего blob-объекта ядра. [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 через драйвер сообщества RADV. 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.01.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]

3-я версия 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 в Colors также является изюминкой. [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 и поддержка Modus совместимости для OpenGL 4.4 (3.1 в 18.1) — другие важные моменты в RadeonSI для карт AMD GCN. Доступны новый Vulkan 1.1 и другие функции для Intel и AMD. Подробнее о Vulkan см. в Mesamatrix. [25]

4-я версия 2018 года — 18.3, выпущенная как стабильная версия 18.3.1 в декабре 2018 года. Многие функции в Detail и поддержка нового оборудования являются основными частями. Полная поддержка 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 хорошо работает в dev-версии с 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.

2-я версия 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 полностью поддерживается в модуле Clover. Zink поддерживает OpenGL 3.3+. Виртуальный драйвер LLVMpipe теперь поддерживает OpenGL 4.5+ с 4.6 в перспективе. Lavapipe (первоначально называвшийся Vallium [39] ) как Vulkan Tree 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 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 Venus будет официально представлен с полной поддержкой Vulkan 1.2+ (больше mesamatrix). ARM Panfrost: доступна поддержка OpenGL ES 3.1+, а panVK — новый драйвер Vulkan. Первоначальная поддержка началась для ARM Apple M1 с новым драйвером Asahi. 21.2 доступен с 4 августа 2021 года. [53]

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

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

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

RustiCL доступен в версии 22.3 с официальным OpenCL 3.0 Conformance для Intel XE Graphics. Производительность равна и лучше 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 Group официально анонсировала 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 Level 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 (Mali) сделали то же самое или, по крайней мере, анонсировали фирменные драйверы Vulkan для Android и других операционных систем. Но когда и появятся ли дополнительные бесплатные и открытые реализации Vulkan для этих графических процессоров, еще предстоит увидеть.

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

Lavapipe — это драйвер программного обеспечения Vulkan на базе CPU и брат 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 — это брат freedreno для OpenGL на Vulkan. V3dv поддерживает Vulkan 1.0+ с Mesa 20.3. В версии 21.1 Turnip поддерживает Vulkan 1.1+. [110] [111] [112]

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

Project Dozen напрямую соединяет 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 добавлена ​​синхронизационная структура 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. использовать программную реализацию алгоритма сжатия или декомпрессии видео (обычно называемого КОДЕК) и выполнять это программное обеспечение на ЦП
  2. использовать программную реализацию алгоритма сжатия или декомпрессии видео (обычно называемого КОДЕК) и выполнять это программное обеспечение на G PU ( движке 3D-рендеринга )
  3. использовать полную (или частичную) аппаратную реализацию алгоритма сжатия или декомпрессии видео; стало очень распространенным интегрировать такие ASIC в чип GPU/CPU/SoC и, следовательно, они широко доступны; по маркетинговым причинам компании создали бренды для своих ASIC, такие как PureVideo (Nvidia), Unified Video Decoder (AMD), Video Coding Engine (AMD), Quick Sync Video (Intel), DaVinci (Texas Instruments), CedarX (Allwinner), Crystal HD (Broadcom); некоторые ASIC доступны для лицензирования в качестве ядра интеллектуальной собственности полупроводников ; обычно разные версии реализуют разные алгоритмы сжатия и/или декомпрессии видео; поддержка таких ASIC обычно относится к драйверу ядра для инициализации оборудования и выполнения низкоуровневых задач. Mesa, которая работает в пользовательском пространстве, содержит реализации нескольких API для программного обеспечения, например, VLC media player , 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 -графические карты стали более распространенными для ПК, отдельные лица, частично поддерживаемые некоторыми компаниями, начали работать над добавлением большей поддержки аппаратно-ускоренного 3D-рендеринга в Mesa. [ когда? ] Инфраструктура прямого рендеринга (DRI) была одним из таких подходов к интерфейсу Mesa, OpenGL и других библиотек API 3D-рендеринга с драйверами устройств и оборудованием. После достижения базового уровня удобства использования поддержка DRI была официально добавлена ​​в Mesa. Это значительно расширило доступный диапазон аппаратной поддержки, достижимой при использовании библиотеки Mesa. [129]

С адаптацией к DRI библиотека Mesa наконец взяла на себя роль компонента front-end полномасштабной среды OpenGL с различными компонентами back-end, которые могли предложить различные степени поддержки 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 также содержит реализацию программного рендеринга, называемого swarst , который позволяет шейдерам работать на CPU в качестве резерва, когда отсутствуют графические аппаратные ускорители. Программный растеризатор Gallium известен как softpipe или, если он построен с поддержкой LLVM, llvmpipe , который генерирует код CPU во время выполнения. [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 GPU для GPU в виртуальных машинах от Google. Venus объединен в 21.1 и представлен для общественности в 21.2. [52] Venus поддерживает Vulkan 1.3+ в Mesa 23.1. Минимальная аппаратная поддержка — Vulkan 1.1 с некоторыми расширениями. [147]

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

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

шейдер-db

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

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

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

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

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

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

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

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

СПИР-В

SPIR-V — это определенная версия стандартного переносимого промежуточного представления . Идея заключается в том, что графические приложения выводят 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 (TGSI) была представлена ​​в 2008 году компанией Tungsten Graphics. Все UMD-устройства в стиле Gallium3D принимают TGSI. NIR в настоящее время является основной областью разработки, поэтому TGSI предназначен только для старых драйверов, таких как инфраструктура по умолчанию r300g, и будет устаревшим через несколько лет.

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

LLVM ИК

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

Компилятор Mesa GLSL генерирует свой собственный 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 State Tracker Interface и Gallium3D WinSys Interface . Эти три компонента называются:

Трекер состояния Gallium3D
Каждый графический API, с помощью которого обращается к драйверу устройства, имеет свой собственный State Tracker, например, есть Gallium3D State Tracker для OpenGL и другой для Direct3D или GLX . Каждый State Tracker содержит реализацию интерфейса Gallium3D State Tracker и является уникальным, это означает, что он является общим для всех существующих драйверов устройств Gallium3D.
Драйвер аппаратного устройства Gallium3D
Это фактический код, который специфичен для базового 3D графического ускорителя, но только в той степени, в которой это позволяет интерфейс Gallium3D WinSys. Существует уникальный драйвер аппаратного устройства Gallium3D для каждого доступного графического чипа, и каждый из них реализует интерфейс отслеживания состояния Gallium3D, а также интерфейс Gallium3D WinSys. Драйвер аппаратного устройства Gallium3D понимает только TGSI (Tungsten Graphics Shader Infrastructure), промежуточный язык для описания шейдеров. Этот код транслировал шейдеры, транслированные из GLSL в TGSI, далее в набор инструкций, реализуемых графическим процессором.
Gallium3D 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) будут больше ориентированы на обработку GPU. [166] В течение переходного периода от настройки режимов пользовательского пространства к настройке режимов пространства ядра некоторые драйверы Mesa 3D, такие как драйвер radeon или драйверы Intel, в конечном итоге поддерживали как DRI1, так и DRI2 и использовали DRI2, если он был доступен в системе. Gallium3D дополнительно требует уровня поддержки шейдеров, который недоступен на старых картах, таких как, например, ATi r100-r200, поэтому пользователям этих карт необходимо продолжать использовать Mesa 3D с DRI2 для использования 3D.

Инфраструктура шейдеров графики Tungsten

Tungsten Graphics Shader Infrastructure ( 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 team разрабатывают свои драйверы с использованием фреймворка Gallium3D. [158] [170]

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

2009-02-11: Ветка gallium-0.2 была объединена с основной веткой Master Mesa. [172] Разработка ведется в основной ветке Mesa.

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

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

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

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

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

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

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

2013-11-30: Mesa 10 с OpenGL 3.2, 3.3 и OpenCL 1.0+

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

2015-09-15: Mesa 11 с OpenGL 4.0, 4.1 и OpenCL 1.2 (незавершенный)

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

2016-07-08: Mesa 12 с OpenGL 4.2, 4.3 и Vulkan 1.0 (Intel ANV и AMD RADV)

2016-11-01: Mesa 13 с OpenGL 4.4 и OpenGL ES 3.2

2017-02-13: Mesa 17.0 с OpenGL 4.5 и драйвер freedreno с OpenGL 3.0 и 3.1

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

2017-12-08: Драйвер Mesa 17.3 AMD Vulkan RADV полностью совместим в тесте Khronos Vulkan 1.0

2018-05-18: Mesa 18.1 с Vulkan 1.1 (Intel ANV и AMD RADV)

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

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

2019-12-11: Mesa 19.3 выпустила OpenGL 4.6 с Intel i965 с поколением 7+ и опционально Iris Gen 8+

2020-03-18: Mesa 20.0 выпустила OpenGL 4.6 с AMD GCN и Vulkan 1.2 для Intel

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

2020-11-30: Mesa 20.3 полностью поддерживает OpenCL 1.2 в Clover [41]

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

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

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

2022-03-09: Mesa 22.0 полностью поддерживает Vulkan 1.3 от Intel Anvil и AMD RADV

2023-05-10: Mesa 23.1 OpenCL с Rust: RustiCL для AMD GCN Оборудование доступно (еще больше оборудования в разработке) [182]

2023-09-30: 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-графики на CPU . Несмотря на это, внутренняя архитектура Mesa была разработана так, чтобы быть открытой для подключения к ускоренному графическим процессором 3D-рендерингу. На этом первом этапе рендеринг выполнялся косвенно на сервере отображения , что приводило к некоторым накладным расходам и заметному отставанию скорости от теоретического максимума. Diamond Monster 3D , использующий чипсет Voodoo Graphics , был одним из первых 3D-аппаратных устройств, поддерживаемых Mesa.

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

Смотрите также

Ссылки

  1. ^ Маршалл, Дэвид (16 декабря 2008 г.). "VMware's year end acquire of Tungsten Graphics". InfoWorld . Получено 6 августа 2011 г.
  2. ^ "[АНОНС] mesa 24.2.6". 30 октября 2024 г. Получено 31 октября 2024 г.
  3. ^ "Улучшение поддержки OpenGL для графических драйверов Linux - Mesa". Indiegogo . 11 декабря 2013 г. Получено 21 января 2015 г.
  4. ^ "AMD изучает новую стратегию драйверов Linux". 22 марта 2014 г. Получено 23 марта 2014 г.
  5. ^ "Поддержка Direct3D 9 выпущена для Linux через Gallium3D, запуск игр - Phoronix". Phoronix.com . Получено 1 августа 2018 г. .
  6. ^ "mesa/mesa - Библиотека 3D-графики Mesa" . Получено 2 ноября 2016 г.
  7. ^ "OpenGL против Mesa matrix". 25 марта 2015 г. Получено 29 марта 2015 г.
  8. ^ "Mesa 11.0 разветвлена, начинается марш релизов". 22 августа 2015 г. Получено 22 августа 2015 г.
  9. ^ ab "RADV Radeon Vulkan Driver Submitted for Review to be Included in Mesa - Phoronix". Архивировано из оригинала 4 ноября 2016 г. Получено 3 ноября 2016 г.
  10. ^ ab "Mesa 17.0.0 Officially Released". Phoronix . 13 февраля 2017 . Получено 13 февраля 2017 .
  11. ^ "mesa/mesa - Библиотека 3D-графики Mesa". Cgit.freedesktop.org . Получено 1 августа 2018 г. .
  12. ^ "Большие изменения, улучшения Mesa 17.0 - Phoronix". 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". Phoronix.com . Получено 1 августа 2018 г. .
  17. ^ "Тесты соответствия OpenGL / OpenGL ES с открытым исходным кодом Khronos - Phoronix". Phoronix.com . Получено 1 августа 2018 г. .
  18. ^ "Великие возможности Mesa 17.1: Vega, RadeonSI Shader Cache, Mauring Vulkan, New OpenGL Extensions - Phoronix". Phoronix.com . Получено 1 августа 2018 г. .
  19. ^ "Mesa Release Notes". Mesa3d.org . Получено 1 августа 2018 г. .
  20. ^ "OpenGL против Mesa matrix". mesamatrix.net . Получено 31 июля 2016 г. .
  21. ^ "Список событий" (PDF) . www.x.org .
  22. ^ "Mesa 17.3 Features - Vulkan Updates, Better Performance - Phoronix". Phoronix.com . Получено 1 августа 2018 г. .
  23. ^ abcdefghijklmnopqr "Календарь релизов". Mesa3d.org . Получено 1 августа 2018 г. .
  24. ^ "Возможности Mesa 18.0 включают множество улучшений OpenGL/Vulkan, кэш шейдеров Intel и дополнительные возможности - Phoronix". 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. ^ "Mesa 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 Nouveau поддерживает HMM, теперь поддерживается OpenCL SVM — Phoronix».
  39. ^ "Программная реализация Vulkan от Mesa теперь известна как Lavapipe". Phoronix .
  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 без URL ]
  47. ^ «Microsoft + Collabora работают над отображением OpenGL/OpenCL поверх DirectX 12 — Phoronix».
  48. ^ «Mesa теперь в 2–5 раз быстрее для SPECViewPerf после оптимизаций OpenGL — Phoronix».
  49. ^ «Mesa 21.0 имеет много новых функций, особенно для Radeon Open-Source Graphics - Phoronix».
  50. ^ «Mesa 21.1-rc1 выпущена с оптимизацией RADV, более быстрым Zink и многими другими новыми функциями — Phoronix».
  51. ^ "Mesa%2021.1 - Фороникс".
  52. ^ abc "Драйвер Vulkan VirtIO-GPU "Venus" от Google интегрирован в 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. ^ «Amber Branch — последняя документация библиотеки 3D-графики Mesa».
  57. ^ «Mesa 22.0-rc1 выпущена с множеством функций драйверов графических процессоров Radeon и Intel Linux, Vulkan 1.3».
  58. ^ «Mesa's "Dozen" близка к предоставлению Vulkan поверх Direct3D 12».
  59. ^ «Rusticl от Mesa получил официальное соответствие OpenCL 3.0».
  60. ^ «Реализация Rusticl OpenCL от Mesa может превзойти вычислительный стек Radeon ROCm».
  61. ^ «Разработка функций Mesa 23.0 завершена с множеством дополнений Vulkan».
  62. ^ «Mesa 23.0 выпущена со множеством изменений для графических драйверов Radeon и Intel с открытым исходным кодом».
  63. ^ «Драйвер DZN Mesa от Microsoft уже вышел в 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. ^ «Mesa 23.1 выпущена — Phoronix».
  70. ^ Ларабель, Майкл (4 марта 2015 г.). «Поддержка OpenVG удалена из Gallium3D». Phoronix . Получено 11 июля 2015 г. .
  71. ^ "St/Vega: Удалить. (3acd7a34) · Коммиты · Mesa / Mesa · GitLab". 3 марта 2015 г.
  72. ^ "последние исправления для "nine" state tracker". Cgit.freedesktop.org . 4 февраля 2016 г.
  73. ^ Ларабель, Майкл (14 декабря 2014 г.). «Mesa 10.4 официально выпущена с Direct3D 9 State Tracker». Phoronix . Получено 11 июля 2015 г. .
  74. ^ «Mesa 23.0 выпущена — Phoronix».
  75. ^ «Mesa 22.3 выпущена — Phoronix».
  76. ^ «Mesa 22.2 выпущена — Phoronix».
  77. ^ «Mesa 22.1 выпущена — Phoronix».
  78. ^ «Выпущена Mesa 22.0 — Phoronix».
  79. ^ «Mesa 21.3 выпущена — Phoronix».
  80. ^ «Mesa 21.2 выпущена с новым драйвером Intel Crocus, PanVK, ранним кодом M1 — Phoronix».
  81. ^ «Mesa 21.1 выпущена с RADV Variable Rate Shading, дополнительными улучшениями 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". Phoronix.com . Получено 1 августа 2018 г. .
  89. ^ "GalliumCompute". Dri.freedesktop.org . Получено 24 января 2019 г. .
  90. ^ "Clover Status Update" (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-announce] Mesa 11.2.0". 4 апреля 2016 г. Получено 4 апреля 2016 г.
  95. ^ "[Mesa-анонс] 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». Phoronix .
  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 released". Декабрь 2013 г. Получено 7 марта 2015 г.
  105. ^ «Выпущен Vulkan 1.3 с динамическим рендерингом в ядре, новое руководство по дорожной карте для современных графических процессоров».
  106. ^ "Программа" (PDF) . www.x.org .
  107. ^ "Драйвер Radeon Vulkan добавлен в Mesa, свежие тесты Radeon Vulkan против OpenGL + AMDGPU-PRO - Phoronix". 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. ^ «Код Mesa «DZN» от Microsoft достиг 99,75%+ соответствия Vulkan 1.0».
  115. ^ ""Dozen" объединен в Mesa для реализации Vulkan на Direct3D 12".
  116. ^ «Внедрение явного ограждения Android в основную ветку». LWN.net . 5 октября 2016 г.
  117. ^ "libgbm в репозиториях Debian". Packages.debian.org .
  118. ^ «Включение альтернативных оконных систем с реализацией графического драйвера, отличного от Mesa». X.org .
  119. ^ «NVIDIA хочет получить обратную связь по своему проекту распределителя памяти устройств». Phoronix .
  120. ^ "Ускорение видео в стиле модерн" . сайт freedesktop.org .
  121. ^ "Матрица характеристик Radeon". freedesktop.org .
  122. ^ "Fedora Linux отключает поддержку Mesa H.264 / H.265 / VC1 VA-API из-за юридических проблем". Phoronix . Получено 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". Phoronix.com . Получено 1 августа 2018 г. .
  128. ^ "Intel/NVIDIA/AMD соревнуются за производительность драйверов Linux GPU с открытым/закрытым исходным кодом - Phoronix". Phoronix.com . Получено 1 августа 2018 г. .
  129. ^ abc Пол, Брайан (10 августа 2000 г.). «Введение в инфраструктуру прямого рендеринга». Dri.sourceforge.net . Получено 25 января 2012 г. .
  130. ^ "DRI2". X.org. Архивировано из оригинала 16 апреля 2013 года . Получено 25 января 2012 года .
  131. ^ "DRI3 и настоящее [LWN.net]". lwn.net . Получено 1 августа 2018 г. .
  132. ^ "[PATCH 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 Mailing-Lists". lists.fedoraproject.org . Получено 3 декабря 2016 г. .
  134. ^ "Radeon-AMDGPU-1.19-Updates". Google.de . Получено 3 декабря 2016 г. .
  135. ^ "LLVMpipe: OpenGL с Gallium3D на вашем процессоре". Phoronix.com . 30 апреля 2010 г. Получено 4 ноября 2014 г.
  136. ^ "llvmpipe". mesa3d.org . Получено 8 июня 2015 г. .
  137. ^ "OpenSWR". openswr.org . Получено 1 августа 2018 г. .
  138. ^ "Mesamatrix: OpenGL против Mesa matrix". mesamatrix.net . Получено 1 августа 2018 г. .
  139. ^ "OpenSWR". 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. ^ «VirGL — последняя документация по библиотеке 3D-графики Mesa».
  147. ^ «Virtio-GPU Venus — последняя документация по библиотеке 3D-графики Mesa».
  148. ^ "Мегадрайверы DRI" . Х.орг . 25 сентября 2013 г.
  149. ^ "Трекеры состояния VDPAU и XvMC теперь являются отдельными библиотеками". Phoronix.com . 23 июня 2014 г.
  150. ^ «Введение — документация NIR 0.0.1».
  151. ^ «NIR: новый компилятор IR для Mesa» .
  152. ^ «Mesa готовится отказаться от старого GLSL-To-TGSI — крупное удаление кода, выигрыш в производительности и исправлениях».
  153. ^ "Файл конфигурации сборки". cgit.freedesktop.org . Документация Gallium.
  154. ^ Фонсека, Хосе (27 апреля 2008 г.). "Gallium3D: Introduction" . Получено 20 июня 2014 г. .
  155. ^ Фонсека, Хосе. "MESA3D.org: Introduction" . Получено 28 октября 2016 г. .
  156. ^ "Gallium3D теперь в основной базе кода Mesa!". Phoronix . 11 февраля 2009 г. Получено 26 октября 2010 г.
  157. ^ "Государство Nouveau, часть 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 Support Is "Done"". Phoronix . 9 ноября 2009 . Получено 15 ноября 2010 .
  160. ^ "Драйвер Radeon "R600g" Gallium3D объединен с [Mesa] Master". Phoronix . 27 мая 2010 . Получено 26 октября 2010 .
  161. ^ "X.Org Wiki GalliumStatus" . Хорг . 22 сентября 2010 г. Проверено 7 декабря 2010 г.
  162. ^ "iris: Добавить новый экспериментальный драйвер Gallium для графических процессоров Intel Gen8+ (!283) · Merge Requests · Mesa / mesa". GitLab . 20 февраля 2019 г. . Получено 21 сентября 2019 г. .
  163. ^ "TG-Gallium3D". Tungsten Graphics. Архивировано из оригинала 3 мая 2008 года . Получено 1 апреля 2008 года .
  164. ^ Русин, Зак (6 февраля 2008 г.). "GPGPU" . Получено 1 апреля 2008 г.
  165. ^ Русин, Зак (7 февраля 2008 г.). "OpenVG и ускорение 2D" . Получено 1 апреля 2008 г.
  166. ^ "DRI2". 4 октября 2007 г. Архивировано из оригинала 4 июля 2008 г. Получено 1 апреля 2008 г.
  167. ^ Русин, Зак (2 ноября 2007 г.). "Gallium3D LLVM" . Получено 1 апреля 2008 г.
  168. ^ Маршалл, Дэвид (16 декабря 2008 г.). «Приобретение Tungsten Graphics компанией VMware в конце года». InfoWorld.
  169. ^ "Галлий". Freedesktop.org . 2 ноября 2011 г. Получено 24 августа 2012 г.
  170. ^ "Nouveau Companion 37". Nouveau.freedesktop.org . 21 марта 2008 г. Архивировано из оригинала 8 февраля 2012 г. Получено 1 апреля 2008 г.
  171. ^ "nouveau: попрощайтесь со старым драйвером DRI... (cgit на FDO)". Cgit.freedesktop.org . 13 июля 2008 г.
  172. ^ "Gallium3D теперь в основной кодовой базе Mesa!". Phoronix.com . 11 февраля 2009 г.
  173. ^ Ларабель, Майкл (25 февраля 2009 г.). «Gallium3D, EGL теперь можно собирать на FreeBSD». Phoronix .
  174. ^ "Отслеживатель состояния OpenVG находится в Mesa 3D". Sourceforge.net . 1 мая 2009 г.
  175. ^ "Mesa 7.5 Release Notes / 17 июля 2009 г.". Mesa3d.org . 17 июля 2009 г. Архивировано из оригинала 13 июня 2010 г. Получено 12 сентября 2017 г.
  176. ^ "r600g: добавить начальную поддержку evergreen (cgit на FDO)". Cgit.freedesktop.org . 10 сентября 2010 г.
  177. ^ "d3d1x: добавить новый трекер состояния COM Direct3D 10/11 для Gallium". Cgit.freedesktop.org . 21 сентября 2010 г.
  178. ^ Ларабель, Майкл (30 ноября 2011 г.). «Драйвер Intel 965 Gallium3D удаляется». Phoronix . стр. 1 . Получено 1 декабря 2011 г. .
  179. ^ Ларабель, Майкл (30 ноября 2011 г.). «Драйвер ячеек Gallium3D тоже отброшен». Phoronix . стр. 1 . Получено 1 декабря 2011 г. .
  180. ^ "nine: Добавить трекер состояний девять для 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. ^ «Разработка функций Mesa 23.2 завершается многочисленными новыми расширениями Vulkan».
  184. ^ "Mesa Introduction". Mesa Team . Архивировано из оригинала 4 мая 2015 года . Получено 8 июня 2015 года .
  185. ^ "История проекта". Mesa Documentation . Получено 11 марта 2021 г.
  186. ^ «Какова связь между Glide и DRI?». dri.freedesktop.org . Получено 25 января 2012 г.

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

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

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