Разработчики 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.