Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Mesa 3D )
Перейти к навигации Перейти к поиску

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

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

Обзор [ править ]

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

Реализации API рендеринга [ править ]

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

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

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

Mesa поддерживает матрицу поддержки со статусом текущего соответствия OpenGL [9] [10], визуализированным в mesamatrix .net . Mesa 10 соответствует OpenGL 3.3 для оборудования Intel, AMD / ATI и Nvidia GPU. Было объявлено о выпуске Mesa 11 с некоторыми драйверами, совместимыми с OpenGL 4.1. [11]

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). [12]

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

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

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

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

Открытый вопрос для Mesa и Linux - High Dynamic Range (HDR). Многие проблемы и открытые точки находятся в стадии разработки для чистой и базовой реализации. [24]

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

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

Первая версия 2018 года - 18.0 и доступна с марта 2018 года по той же схеме в 2017 году. [27] Полная поддержка OpenGL 4.6 не готова, но многие функции и улучшения были успешно протестированы в RC3. 10-битная поддержка Intel i965 в цвете также является изюминкой. [28] Новым является поддержка 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 находятся в WIP. Программный драйвер для виртуальных машин 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. См. Дополнительные сведения о Вулкане в Месаматриксе. [29]

Четвертая версия 2018 года - 18.3 и выпущена как стабильная версия 18.3.1 в декабре 2018 года. Многие функции в деталях и поддержка нового оборудования являются основными частями. Полная поддержка OpenGL 4.6 не готова. [30] [31]

1-я версия 2019 года - 19.0 и была выпущена в марте. Полная поддержка OpenGL 4.6 не готова, но многие улучшения на этом пути есть во всех драйверах. [32] [33]

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

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

4-я версия 2019 года - 19.3. OpenGL 4.6 готов для Intel i965 и опционально для нового драйвера Iris. [36]

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

Вторая версия 2020 года - 20.1. Многие доработки уже готовы во многих драйверах. Zink - это новый виртуальный драйвер для OpenGL поверх Vulkan. [39]

Третья версия 2020 года - 20.2. OpenGL 3.0 для Zink - одна из новых функций. LLVMpipe будет поддерживать OpenGL 4.3+ (4.5+ в 20.3). ARM Panfrost в основном улучшен многими модулями. Совместно используемая виртуальная память возможна для OpenCL в Nouveau с Паскалем и выше. [40] [41] [42]

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. VALLIUM as Vulkan Tree компании LLVMpipe объединен. [43] [44] [45] [46] [47]

В 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. [48] [49] [50] [51] Mesa 21.0.0 RC1 Iwans доступен для тестирования. [52] Новый выпуск с фактическим RC5, запланированным на март 2021 года.

Таблица API рендеринга [ править ]

Вулкан [ править ]

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

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

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

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

RADV - это бесплатный проект для AMD, доступный начиная с версии 13. [12] Соответствие 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 VIRGL начинает разработку Vulkan в 2018 году с проектов GSOC для поддержки виртуальных машин. [84]

Явное ограждение [ править ]

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

Ядро Linux 4.9 добавило структуру синхронизации Android в основную линию. [85]

Общее управление буфером [ править ]

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

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

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

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

Реализации API ускорения видео [ править ]

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

  1. использовать программную реализацию алгоритма сжатия или декомпрессии видео (обычно называемого CODEC) и запускать это программное обеспечение на C PU
  2. использовать программную реализацию алгоритма сжатия или декомпрессии видео (обычно называемого CODEC) и запускать это программное обеспечение на G PU ( движке 3D-рендеринга )
  3. использовать полную (или частичную) аппаратную реализацию алгоритма сжатия или распаковки видео; стало обычным делом интегрировать такие ASIC в микросхему GPU / CPU / APU / 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 , GStreamer , HandBrake и т. Д., Для удобного доступа к таким ASIC:
  • Video Acceleration API (VAAPI) - наиболее распространенный API для Linux, используемый AMD и Intel.
  • Video Decode and Presentation API для Unix (VDPAU) - используется Nvidia
  • DirectX Video Acceleration (DXVA) - только для Microsoft Windows
  • OpenMAX IL - разработан Khronos Group для сжатия видео.
  • Механизм распределенного кодека (DCE) - разработан Texas Instruments
  • X-Video Bitstream Acceleration (XvBA) - расширение до Xv - удалось VAAPI
  • Компенсация движения X-Video (XvMC) - расширение до Xv - сменилось VAAPI

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

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

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

Драйверы устройств [ править ]

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

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

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

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

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

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

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

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

DRI3 поддерживается драйвером Intel с 2013 года [99] [100] и используется по умолчанию в некоторых дистрибутивах Linux с 2016 года [101], чтобы включить поддержку Vulkan и многое другое. С конца 2016 года он также используется по умолчанию на оборудовании AMD (X.Org Server 1.18.3 и новее). [102]

Программный рендерер [ править ]

Mesa также содержит реализацию программного рендеринга, называемого swrast, которая позволяет шейдерам запускаться на ЦП в качестве запасного варианта , когда отсутствуют графические аппаратные ускорители. Программный растеризатор Gallium известен как softpipe или когда он построен с поддержкой LLVM llvmpipe , который генерирует код ЦП во время выполнения. [103] [104] Начиная с 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. [105] С другой стороны, теперь поддерживается OpenGL 3.1+. [106] В некоторых примерах были измерены значения ускорения от 29 до 51, относящиеся к LLVMPIPE. [107] 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 Development начинает с проектов GSOC 2018. [108] [109] [110] [84] [111] [112]

[113]

Мега драйверы [ править ]

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

шейдер-БД [ править ]

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

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

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

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

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

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

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

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

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

SPIR-V [ править ]

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

  • Спецификация SPIR-V (предварительная)

GLSL IR [ править ]

  • cgit.freedesktop.org/mesa/mesa/tree/src/compiler/glsl/README
  • XDC2014, Мэтт Тернер: видео на YouTube , Мэтт Тернер - компилятор GLSL: где мы были и куда идем
  • XDC2015, Мэтт Тернер: видео на YouTube , www .x .org / wiki / Events / XDC2015 / Program / turner _glsl _compiler .pdf

Mesa IR [ править ]

NIR [ править ]

NIR будет расширен в следующих выпусках в качестве основы для поддержки Spir-V. LLVMpipe, RadeonSI и Nouveau будут заменены на NIR с TGSI.

  • Коннор Эбботт - NIR, или выход за рамки GLSL IR в Mesa XDC2014
    • (Mesa-dev) 2014-12-15 Повторное внедрение NIR, нового IR для mesa
  • cgit.freedesktop.org/mesa/mesa/tree/src/compiler/nir/README
  • fosdem.org/2016/schedule/event/i965_nir/attachments/slides/1113/export/events/attachments/i965_nir/slides/1113/nir_vec4_i965_fosdem_2016_rc1.pdf
  • NIR в RadeonSI
  • Обновление Noveau 2018
  • Noveau с NIR в Mesa 19.3

TGSI [ править ]

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

LLVM IR [ править ]

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

RADV ACO IR [ править ]

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

Компилятор Mesa GLSL [ править ]

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

Gallium3D [ править ]

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

Матрица функций предоставляется в GalliumStatus , а усилия по написанию бесплатных драйверов устройств с открытым исходным кодом для графических чипов отдельно документируются в Wikipedia: Бесплатные драйверы графических устройств с открытым исходным кодом .

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

Gallium3D является частью Mesa с 2009 года [119] и в настоящее время используется бесплатным графическим драйвером с открытым исходным кодом для Nvidia ( новый проект), [120] [121] для AMD R300 - R900 , [122] [123] [124] Драйвер Intel 'Iris' для iGPU поколения 8+ [125] и для других бесплатных драйверов устройств GPU с открытым исходным кодом .

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

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

Отслеживание состояния Gallium3D

  • Каждый графический API, с помощью которого обращается к драйверу устройства, имеет свой собственный трекер состояния, например, есть трекер состояния Gallium3D для OpenGL и другой для Direct3D или GLX . Каждый State Tracker содержит реализацию интерфейса State Tracker Gallium3D и уникален, это означает, что он используется всеми существующими драйверами устройств 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 ), потребуется только один сервер, называемый трекером состояния, ориентированный на Gallium3D API. Напротив, драйверы устройств DRI классического стиля требуют разных серверных компонентов для каждой аппаратной платформы, а несколько других API-интерфейсов нуждаются в переводе в OpenGL за счет дублирования кода. [126] [127] [128]Все драйверы устройств от поставщиков, из-за их патентованной природы и с закрытым исходным кодом, написаны таким образом, что означает, например, что AMD Catalyst реализует как OpenGL, так и Direct3D , а драйверы поставщиков для GeForce имеют свои реализации.

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

Инфраструктура графических шейдеров Tungsten [ править ]

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

Использование LLVM [ править ]

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

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

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

Принятие [ править ]

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

История [ править ]

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

Вехи [ править ]

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

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

2009-02-11: Ветвь галлия-0.2 была объединена с основной ветвью Master компании Mesa. [135] Разработка ведется в основной ветке Mesa.

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

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

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

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

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

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

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

30.11.2013: Mesa 10 с OpenGL 3.2, 3.3 и OpenCL 1.0+

2014-11-18: Основные изменения были внесены в код для поддержки Direct3D 9. [143]

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 Driver RADV полностью соответствует требованиям Khronos Test of 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+ [144]

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 [145]

Производительность [ править ]

  • Сравнение производительности бесплатных и открытых драйверов графических устройств

История [ править ]

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

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

См. Также [ править ]

  • Бесплатный драйвер графического устройства с открытым исходным кодом

Ссылки [ править ]

  1. Маршалл, Дэвид (16 декабря 2008 г.). «Приобретение компанией VMware компании Tungsten Graphics в конце года» . InfoWorld . Проверено 6 августа 2011 года .
  2. ^ a b «Введение в Месу» . Команда Mesa . Проверено 8 июня 2015 года .
  3. ^ "Примечания к выпуску Mesa 20.3.4" . 29 января 2021 . Проверено 1 февраля 2021 года .
  4. ^ "Страница языков Меса" . Откройте Hub . Дата обращения 2 марта 2015 .
  5. ^ "Лицензия Mesa 3D" . Дата обращения 3 июня 2015 .
  6. ^ «Улучшение поддержки OpenGL для графических драйверов Linux - Mesa» . Indiegogo . 11 декабря 2013 . Проверено 21 января 2015 года .
  7. ^ «AMD изучает новую стратегию драйверов Linux» . 22 марта 2014 . Проверено 23 марта 2014 года .
  8. ^ «Поддержка Direct3D 9 выпущена для Linux через Gallium3D, Запуск игр - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  9. ^ "Меса / Меса - Библиотека 3D-графики Меса" . Проверено 2 ноября +2016 .
  10. ^ «Матрица OpenGL и Mesa» . 25 марта 2015 . Проверено 29 марта 2015 года .
  11. ^ «Меса 11.0 была разветвлена, марш релиза начинается» . 22 августа 2015 . Проверено 22 августа 2015 года .
  12. ^ a b «Архивная копия» . Архивировано из оригинала 4 ноября 2016 года . Проверено 3 ноября +2016 .CS1 maint: archived copy as title (link)
  13. ^ a b "Официальный выпуск Mesa 17.0.0" . Фороникс . 13 февраля 2017 . Проверено 13 февраля 2017 года .
  14. ^ "Меса / Меса - Библиотека 3D-графики Меса" . Cgit.freedesktop.org . Проверено 1 августа 2018 .
  15. ^ "Большие изменения, улучшения Mesa 17.0 - Phoronix" . Phoronix.com . Проверено 1 августа 2018 .
  16. ^ "Меса / Меса - Библиотека 3D-графики Меса" . Cgit.freedesktop.org . Проверено 1 августа 2018 .
  17. ^ "Программа" (PDF) . www.x.org . 2016 г.
  18. ^ "Меса / Меса - Библиотека 3D-графики Меса" . Cgit.freedesktop.org . Проверено 1 августа 2018 .
  19. ^ «Взгляд на огромный прирост производительности с Nouveau Mesa 17.0-devel на Maxwell - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  20. ^ "Тесты на соответствие OpenGL / OpenGL ES с открытыми исходными кодами Khronos - Phoronix" . Phoronix.com . Проверено 1 августа 2018 .
  21. ^ «Основные особенности Mesa 17.1: Vega, RadeonSI Shader Cache, созревание Vulkan, новые расширения OpenGL - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  22. ^ "Примечания к выпуску Mesa" . Mesa3d.org . Проверено 1 августа 2018 .
  23. ^ «Матрица OpenGL и Mesa» . mesamatrix.net . Проверено 31 июля 2016 года .
  24. ^ «Название» (PDF) . Проверено 1 августа 2018 .
  25. ^ «Список событий» (PDF) . www.x.org .
  26. ^ «Особенности Mesa 17.3 - Обновления Vulkan, Лучшая производительность - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  27. ^ a b c d e f g h "Календарь релизов" . Mesa3d.org . Проверено 1 августа 2018 .
  28. ^ «Функции Mesa 18.0 включают множество улучшений OpenGL / Vulkan, Intel Shader Cache и дополнительные возможности - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  29. ^ a b «Скоро выйдет Mesa 18.2 со многими улучшениями драйверов OpenGL / Vulkan - Phoronix» . www.phoronix.com .
  30. ^ «Блестящие новые возможности Mesa 18.3 для графических драйверов Intel / Radeon с открытым исходным кодом - Phoronix» . www.phoronix.com .
  31. ^ «Mesa добилась огромного прогресса в 2018 году на драйверах Vulkan / OpenGL с открытым исходным кодом - Phoronix» . www.phoronix.com .
  32. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.0-Features-Queue
  33. ^ https://www.phoronix.com/scan.php?page=article&item=mesa190-rad-jan&num=1
  34. ^ https://www.phoronix.com/scan.php?page=article&item=radeonsi-nir-2019&num=1
  35. ^ https://www.phoronix.com/scan.php?page=news_item&px=Iris-GLSL-460-Совместимость
  36. ^ https://www.phoronix.com/scan.php?page=article&item=mesa-193-features
  37. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.0-rc1-Released
  38. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.0-Released
  39. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.1-Features
  40. ^ https://www.phoronix.com/scan.php?page=news_item&px=Zink-OpenGL-3.0-Over-Vulkan
  41. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2-RC1-Features-Released
  42. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2-Nouveau-HMM
  43. ^ https://www.phoronix.com/scan.php?page=news_item&px=V3DV-Mesa-Upstream-Plans
  44. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
  45. ^ https://www.phoronix.com/scan.php?page=news_item&px=Zink-OpenGL-3.3-Mesa-20.3
  46. ^ https://www.phoronix.com/scan.php?page=news_item&px=OpenGL-4.5-LLVMpipe-Lands
  47. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-VALLIUM-Merged
  48. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.0-Direct3D-12-Gallium3D
  49. ^ https://xdc2020.x.org/event/9/contributions/621/attachments/701/1297/XDC_-_Mesa_for_Mapping_Layers.pdf
  50. ^ https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Collabora-DirectX
  51. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-2-5x-Faster-SPECViewPerf
  52. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.0-RC1-Released
  53. ^ https://docs.mesa3d.org/relnotes.html
  54. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-Released
  55. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
  56. ^ Larabel, Майкл (4 марта 2015). «Поддержка OpenVG лишена Gallium3D» . Фороникс . Проверено 11 июля 2015 года .
  57. ^ https://gitlab.freedesktop.org/mesa/mesa/commit/3acd7a34ab05b87521b74f626ec637e7fdcc6595
  58. ^ "последние патчи к" девятке "государственного трекера" . Cgit.freedesktop.org . 4 февраля 2016 г.
  59. ^ Larabel, Майкл (14 декабря 2014). «Официальный выпуск Mesa 10.4 с Direct3D 9 State Tracker» . Фороникс . Проверено 11 июля 2015 года .
  60. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2.2- Выпущено
  61. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.1-Features
  62. ^ https://www.phoronix.com/scan.php?page=article&item=mesa20-radeonsi-nir&num=1
  63. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.3-RC1-Released
  64. ^ https://www.phoronix.com/scan.php?page=article&item=mesa-193-features&num=1
  65. ^ «Mesa 18.0 должна появиться сегодня со многими улучшениями драйверов Vulkan / OpenGL - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  66. ^ "GalliumCompute" . Dri.freedesktop.org . Проверено 24 января 2019 .
  67. ^ «Обновление статуса клевера» (PDF) . Проверено 27 марта 2020 года .
  68. ^ "[Меса-анонс] меса 17.0.0" . Проверено 13 февраля 2017 года .
  69. ^ "[Меса-анонс] меса 13.0.0" . Проверено 2 ноября +2016 .
  70. ^ a b «Выпущена Mesa 12.0 с поддержкой OpenGL 4.3, Intel Vulkan и многими другими функциями» . 8 июля 2016 . Проверено 8 июля +2016 .
  71. ^ "[Меса-анонс] Меса 11.2.0" . Проверено 4 апреля 2016 года .
  72. ^ "[Меса-анонс] Меса 11.1.0" . Проверено 15 декабря 2015 .
  73. ^ "[Меса-анонс] Меса 11.0.0" . Проверено 26 сентября 2015 года .
  74. ^ "[Меса-анонс] Меса 10.6.0" . Проверено 15 июня 2015 года .
  75. ^ Larabel, Майкл (26 октября 2013). «Возможности, которые можно найти в Mesa 10.0» . Фороникс .
  76. ^ "[Меса-анонс] Меса 10.5.0" . Проверено 7 марта 2015 года .
  77. ^ "[Объявление о выпуске Mesa] Выпущена версия Mesa 10.4.0" . Проверено 7 марта 2015 года .
  78. ^ "[Объявление о выпуске Mesa] Выпущена версия Mesa 10.3" . Проверено 7 марта 2015 года .
  79. ^ "[Объявление о выпуске Mesa] Выпущена версия Mesa 10.2" . Проверено 7 марта 2015 года .
  80. ^ "[Объявление о выпуске Mesa] Выпущена версия Mesa 10.1" . Проверено 7 марта 2015 года .
  81. ^ "[Mesa-announce] Выпущена Mesa 10.0" . Проверено 7 марта 2015 года .
  82. ^ "Программа" (PDF) . www.x.org .
  83. ^ «Драйвер Radeon Vulkan добавлен в Mesa, свежие тесты Radeon Vulkan против OpenGL + AMDGPU-PRO - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  84. ^ a b «Vulkan Virgl начал поддержку этого графического / вычислительного API в виртуальных машинах - Phoronix» . www.phoronix.com .
  85. ^ «Внедрение явного ограждения Android в основную линию» . LWN.net . 5 октября 2016 г.
  86. ^ "libgbm в репозиториях Debian" . Packages.debian.org .
  87. ^ «Включение альтернативных оконных систем с реализацией графического драйвера, отличного от Mesa» . X.org .
  88. ^ «NVIDIA хочет получить отзывы о своем проекте по распределению памяти для устройств» . Фороникс .
  89. ^ "Nouveau Video Acceleration" . freedesktop.org .
  90. ^ «Матрица характеристик Radeon» . freedesktop.org .
  91. ^ Торал, Яго (8 августа 2014). «Погружение в Мезу» . Дата обращения 19 мая 2016 .
  92. ^ «Страница состояния инфраструктуры прямого рендеринга» . freedesktop.org .
  93. ^ «Как улучшить игровую производительность на вашей машине Linux - APC» . Apcmag.com . 25 июля 2013 . Проверено 1 августа 2018 .
  94. ^ «Linux: Mesa, Gallium3D, драйверы Nouveau и NVIDIA, тест OpenGL (GTX 280, GTX 480, GTX 580) - Geeks3D» . Geeks3d.com . Проверено 1 августа 2018 .
  95. ^ «Драйвер Nouveau работает намного медленнее, чем официальный драйвер NVIDIA - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  96. ^ «Intel / NVIDIA / AMD соревнуются в производительности драйвера графического процессора Linux с открытым / закрытым кодом - Phoronix» . Phoronix.com . Проверено 1 августа 2018 .
  97. ^ a b c Пол, Брайан (10 августа 2000 г.). «Введение в инфраструктуру прямого рендеринга» . Dri.sourceforge.net . Проверено 25 января 2012 года .
  98. ^ "DRI2" . X.org. Архивировано из оригинального 16 апреля 2013 года . Проверено 25 января 2012 года .
  99. ^ "DRI3 и настоящее [LWN.net]" . lwn.net . Проверено 1 августа 2018 .
  100. ^ "[PATCH 0/6] Добавить поддержку DRI3000 в драйверы ядра и i965" . Lists.freedesktop.org . Проверено 1 августа 2018 .
  101. ^ "xorg-x11-drv-intel-2.99.917-19.20151206.fc23 (повторно) по умолчанию включен dri3 - kde - Списки рассылки Fedora" . lists.fedoraproject.org . Проверено 3 декабря +2016 .
  102. ^ «Radeon-AMDGPU-1.19-Updates» . Google.de . Проверено 3 декабря +2016 .
  103. ^ «LLVMpipe: OpenGL с Gallium3D на вашем процессоре» . Phoronix.com . 30 апреля 2010 . Проверено 4 ноября 2014 года .
  104. ^ "llvmpipe" . mesa3d.org . Проверено 8 июня 2015 года .
  105. ^ "OpenSWR" . openswr.org . Проверено 1 августа 2018 .
  106. ^ "Mesamatrix: OpenGL против матрицы Mesa" . mesamatrix.net . Проверено 1 августа 2018 .
  107. ^ "OpenSWR" . openswr.org . Проверено 1 августа 2018 .
  108. ^ "Архивная копия" . Архивировано из оригинального 28 августа 2018 года . Проверено 28 августа 2018 .CS1 maint: archived copy as title (link)
  109. ^ "Отслеживание функций VirGL OpenGL Mesa - Phoronix" . www.phoronix.com .
  110. ^ «VirGL от Mesa теперь поддерживает OpenGL 4.2, предлагая гостевые виртуальные машины - Phoronix» . www.phoronix.com .
  111. ^ «Текущая производительность Virgl3D, планы на будущее - Phoronix» . www.phoronix.com .
  112. ^ «Архивная копия» (PDF) . Архивировано из оригинального (PDF) 1 октября 2018 года . Проверено 13 декабря 2018 . CS1 maint: archived copy as title (link)
  113. ^ https://archive.fosdem.org/2019/schedule/event/virtual_gpu/attachments/slides/3353/export/events/attachments/virtual_gpu/slides/3353/Virgl_Presentation_FOSDEM2019.pdf
  114. ^ "DRI мегадрайверы" . X.org . 25 сентября 2013 г.
  115. ^ «Слежение за состоянием VDPAU и XvMC теперь являются отдельными библиотеками» . Phoronix.com . 23 июня 2014 г.
  116. ^ "Создать файл конфигурации" . cgit.freedesktop.org . Документация по галлию.
  117. Фонсека, Хосе (27 апреля 2008 г.). «Gallium3D: Введение» . Проверено 20 июня 2014 года .
  118. ^ Фонсека, Хосе. «MESA3D.org: Введение» . Проверено 28 октября +2016 .
  119. ^ "Gallium3D теперь в основной кодовой базе Mesa!" . Фороникс . 11 февраля 2009 . Проверено 26 октября 2010 года .
  120. ^ "Состояние модерна, часть 2" . LWN.net . 26 февраля 2008 . Проверено 7 марта 2008 года .
  121. ^ a b "Nouveau Companion 36" . Nouveau.freedesktop.org . 7 марта 2008 года Архивировано из оригинала 7 марта 2013 года . Проверено 1 апреля 2008 года .
  122. ^ "Поддержка ATI R300 Gallium3D DRI" выполнена " " . Фороникс . 9 ноября 2009 . Проверено 15 ноября 2010 года .
  123. ^ "Radeon" R600g "Драйвер Gallium3D, объединенный с [Mesa] Master" . Фороникс . 27 мая 2010 . Проверено 26 октября 2010 года .
  124. ^ "X.Org Wiki GalliumStatus" . Xorg . 22 сентября 2010 . Проверено 7 декабря 2010 года .
  125. ^ "iris: Добавить новый экспериментальный драйвер Gallium для графических процессоров Intel Gen8 + (! 283) · Запросы на слияние · Mesa / mesa" . GitLab . Проверено 21 сентября 2019 года .
  126. ^ "TG-Gallium3D" . Вольфрамовая графика. Архивировано из оригинала 3 мая 2008 года . Проверено 1 апреля 2008 года .
  127. Rusin, Zack (6 февраля 2008 г.). «ГПГПУ» . Проверено 1 апреля 2008 года .
  128. Rusin, Zack (7 февраля 2008 г.). «OpenVG и ускорение 2D» . Проверено 1 апреля 2008 года .
  129. ^ "DRI2" . 4 октября 2007 года Архивировано из оригинала 4 июля 2008 года . Проверено 1 апреля 2008 года .
  130. Rusin, Zack (2 ноября 2007 г.). "Галлий3D LLVM" . Проверено 1 апреля 2008 года .
  131. Маршалл, Дэвид (16 декабря 2008 г.). «Приобретение компанией VMware компании Tungsten Graphics в конце года» . InfoWorld.
  132. ^ «Галлий» . Freedesktop.org . 2 ноября 2011 . Проверено 24 августа 2012 года .
  133. ^ "Nouveau Companion 37" . Nouveau.freedesktop.org . 21 марта 2008. Архивировано из оригинала 8 февраля 2012 года . Проверено 1 апреля 2008 года .
  134. ^ "nouveau: попрощайтесь со старым драйвером DRI ... (cgit на FDO)" . Cgit.freedesktop.org . 13 июля 2008 г.
  135. ^ "Gallium3D теперь в основной кодовой базе Mesa!" . Phoronix.com . 11 февраля 2009 г.
  136. ^ Larabel, Майкл (25 февраля 2009). «Gallium3D, EGL теперь можно собирать на FreeBSD» . Фороникс .
  137. ^ "Отслеживание состояния OpenVG находится в Mesa 3D" . Sourceforge.net . 1 мая 2009 г.
  138. «Примечания к выпуску Mesa 7.5 / 17 июля 2009 г.» . Mesa3d.org . 17 июля 2009 года Архивировано из оригинала 13 июня 2010 . Проверено 12 сентября 2017 года .
  139. ^ "r600g: добавить начальную поддержку вечнозеленых растений (cgit на FDO)" . Cgit.freedesktop.org . 10 сентября 2010 г.
  140. ^ "d3d1x: добавить новый трекер состояния Direct3D 10/11 COM для Gallium" . Cgit.freedesktop.org . 21 сентября 2010 г.
  141. ^ Larabel, Майкл (30 ноября 2011). "Драйвер Gallium3D Intel 965 прекращает работу" . Фороникс . п. 1 . Проверено 1 декабря 2011 года .
  142. ^ Larabel, Майкл (30 ноября 2011). «Драйвер ячейки Gallium3D тоже упал» . Фороникс . п. 1 . Проверено 1 декабря 2011 года .
  143. ^ «девять: добавить девятый трекер состояния для Direct3D9 (v3)» . Cgit.freedesktop.org . 18 ноября 2014 г.
  144. ^ «Mesa 19.1 выпущена с экспериментальным Intel Gallium3D, а также с другими новыми драйверами GL / VLK - Phoronix» . www.phoronix.com . Проверено 21 сентября 2019 года .
  145. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
  146. ^ "Какая связь между Glide и DRI?" . dri.freedesktop.org . Проверено 25 января 2012 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Эдж, Джейк (октябрь 2013 г.). «История Месы» .

Внешние ссылки для Gallium3D [ править ]

  • freedesktop.org - Gallium3D , статья о текущем состоянии Gallium3D
  • Фонсека, Хосе (апрель 2008 г.), Введение в Gallium3D
  • Русин, Зак, Галлий3D
  • Корбет, Джонатан (ноябрь 2007 г.), Управление памятью для графических процессоров
  • Общее декодирование видео с ускорением на GPU, проект Google Summer of Code 2008 с использованием Gallium, заархивировано из оригинала 31 июля 2008 г.
  • Русин, Зак (2008), Gallium3D: Graphics Done Right (PDF) (презентация), Академия
  • Русин, Зак (2008), Gallium3D: Graphics Done Right (презентация), Akademy , архивировано из оригинала (видео) 1 января 2011 г.
  • Обновленная информация о портах Gallium3D на AROS и Haiku (PDF) , FOSDEM 2010, 7 февраля 2010 г.