Разработчики Collabora представили новый контроллер Gallium для Mesa

Контроллер Collabora

Совсем недавно Выпущено разработчиков Collabora через сообщение в блоге новый контроллер Gallium для Mesa, который реализует промежуточный уровень организовать OpenCL 1.2 и OpenGL 3.3 API о драйверах с поддержкой DirectX 12 (D3D12) и о том, что их исходный код выпущен под лицензией MIT.

Предлагаемый контроллер будет позволяет использовать Mesa на устройствах которые изначально не совместимы с OpenCL и OpenGL а также в качестве отправной точки для переноса приложений OpenGL / OpenCL для работы на D3D12. Для производителей графических процессоров подсистема позволяет обеспечить поддержку OpenCL и OpenGL, причем драйверы поддерживают только D3D12.

В своем блоге разработчики делятся:

В течение последних нескольких месяцев мы работали над двумя захватывающими новыми проектами в Collabora, и, наконец, пришло время поделиться информацией о них со всем миром ...

Ближайших плановнаблюдается достижение полного одобрения испытаний Поддержка OpenCL 1.2 и OpenGL 3.3, проверка совместимости с приложениями и включение лучших практик в основной состав Mesa.

О новом контроллере

Разработка нового драйвера ведется совместно с инженерами Microsoft. для разработки инструментов D3D11On12 для наборов передачи D3D11 и библиотеки D3D12TranslationLayer D3D12, а также стандартных графических примитивов поверх D3D12.

Реализация включает драйвер Gallium, компилятор OpenCL, среда выполнения OpenCL и компилятор шейдеров NIR-to-DXIL, который преобразует промежуточное представление шейдеров NIR, используемых в Mesa, в двоичный формат DXIL (промежуточный язык DirectX), совместимый с DirectX 12 и основанный на битовом коде LLVM 3.7 (Microsoft's DirectX Shader Compiler - это, по сути, расширенная вилка LLVM 3.7). Компилятор OpenCL был подготовлен на основе опыта проекта LLVM и инструментария SPIRV-LLVM.

Эта работа основана на многих предыдущих работах. Прежде всего, мы создаем это с помощью Mesa 3D, с интерфейсом Gallium в качестве основы для слоя OpenGL и NIR в качестве основы для компилятора OpenCL. Мы также используем LLVM и транслятор Khronos SPIRV-LLVM в качестве компилятора.

Кроме того, мы используем опыт Microsoft в создании уровня перевода D3D12, а также наш собственный опыт в разработке Zink.

Исходный код OpenCL компилируется с clang в промежуточный псевдокод LLVM (LLVM IR), который затем преобразуется в промежуточное представление ядра OpenCL в формате SPIR-V.

Ядра в представлении SPIR-V перенесены в Mesa, переведены в формат NIR, оптимизированы и переданы в NIR-to-DXIL для создания подходящих вычислительных шейдеров DXIL. для выполнения на графическом процессоре с использованием среды выполнения на основе DirectX 12. Вместо использования Clover в реализации OpenCL Mesa предлагается новая среда выполнения OpenCL, которая позволяет выполнять более прямые преобразования в API DirectX 12.

Драйверы OpenCL и OpenGL подготавливаются с использованием интерфейса Gallium. предоставляется в Mesa, что позволяет обходить специфику OpenGL при создании драйверов и преобразовывать вызовы OpenGL в сущности, которые ближе к графическим примитивам, с которыми работают современные графические процессоры.

Драйвер Gallium принимает команды OpenGL и с участием переводчика NIR-to-DXIL создает буферы команд, которые выполняются на графическом процессоре с использованием драйвера D3D12.

Наконец, разработчики упоминают, что это ранняя работа и что они ожидают, что контроллер со временем улучшится:

Это всего лишь объявление, и предстоит еще много работы. У нас есть кое-что, что в некоторых случаях работает на данный момент, но мы только начинаем царапать поверхность.

Прежде всего, нам нужно достичь того уровня функций, к которому мы стремимся. В настоящее время наша цель - пройти тестирование на соответствие OpenCL 1.2 и OpenGL 3.3. Нам предстоит пройти долгий путь, но я уверен, что приложив немного усилий и потрудившись, мы добьемся этого.

Если вам интересно узнать об этом больше, вы можете проверить исходную заметку в следующая ссылка или для тех, кто заинтересован в проверке исходного кода, могут это сделать по этой ссылке.


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.