Реализация OpenGL поверх DirectX достигла совместимости с OpenGL 3.3 и принята в состав Mesa
11 марта 2021 года
Компания Collabora сообщила о принятии в основной состав Mesa Gallium-драйвера D3D12, реализующего прослойку для организации работы OpenGL поверх API DirectX 12 (D3D12). Одновременно объявлено об успешном прохождении драйвером тестов на совместимость с OpenGL 3.3 при работе поверх D3D12-драйверов WARP (программный растеризатор) и NVIDIA.
Драйвер может быть полезен для использования Mesa на устройствах с драйверами, поддерживающими только D3D12, а также в качестве стартовой позиции для портирования OpenGL-приложений для работы поверх API D3D12. В том числе драйвер можно будет использовать для организации работы графических приложений в окружениях под управлением подсистемы WSL (Windows Subsystem for Linux), обеспечивающей запуск исполняемых файлов Linux в Windows.
Разработка ведётся совместно с инженерами Microsoft, развивающими открытый инструментарий D3D11On12 для перевода игр с D3D11 на D3D12 и библиотеку D3D12TranslationLayer, реализующую типовые графические примитивы поверх D3D12. На базе рассматриваемого проекта компания Microsoft уже подготовила прослойку, дающую возможность запускать завязанные на OpenGL приложения на устройствах с Windows, не предоставляющих полную поддержку OpenGL. В частности, удалось обеспечить работу Photoshop на Windows-устройствах с процессорами ARM.
Реализация включает драйвер для Mesa, компилятор OpenCL, OpenCL runtime и компилятор шейдеров NIR-to-DXIL, преобразующий применяемое в Mesa промежуточное представление шейдеров NIR в бинарный формат DXIL (DirectX Intermediate Language), поддерживаемый в DirectX 12 и основанный на биткоде LLVM 3.7 ( DirectX Shader Compiler от Microsoft является ответвлением от LLVM 3.7). Драйвере для Mesa использует интерфейс Gallium, принимает команды OpenGL и при помощи транслятора NIR-to-DXIL формирует команды D3D12, которые исполняются на GPU посредством системного драйвера D3D12.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.