Collabora некоторое время работала над графическими проектами с открытым исходным кодом, включая драйвера с открытым исходным кодом Panfrost для графических процессоров Arm Midgard и Bitfrost, которые, в начале этого года, получили экспериментальную поддержку OpenGL ES 3.0.
Но, компания также работает с Microsoft, чтобы обеспечить прослойку для организации работы OpenCL 1.2 и OpenGL 3.3 на всех устройствах Windows, совместимых с DirectX 12.
Их решение основано на реализации открытого кода Mesa 3D OpenCL и OpenGL с тремя основными компонентами:
- компилятор OpenCL, использующий LLVM и SPIRV-LLVM-преобразователь для генерации представлений SPIR-V в OpenCL-ядра. Данные проходят через преобразователь SPIR-V в NIR (NIR – это внутреннее представление Mesa для шейдеров GPU) и, наконец, в NIR-to-DXIL, генерируя вычислительный шейдер DXIL и метаданные, понятные DirectX 12 (D3D12).
- пользовательская среда выполнения OpenCL для прямой трансляции DirectX 12 (не основанная на реализации Mesa Clover)
- драйвер Gallium, который создает и выполняет буферы команд на графическом процессоре с использованием API D3D12. Он превращает команды OpenGL в буферы команд D3D12 через преобразователь NIR-to-DXIL, которые выполняются на GPU с помощью драйвера D3D12.
Это позволит аппаратной платформе без полной поддержки OpenGL или OpenCL запускать приложения, использующие этот графический стандарт, и упростит разработчикам переход от старых версий OpenCL и API OpenGL к Direct X12.
Проект с открытым исходным кодом с кодом, размещенным на Gitlab, и в конечном итоге Collabora и Microsoft планируют передать исходный код в библиотеку 3D-графики Mesa.
Более подробную информацию можно найти в отдельных анонсированных блогах разработчиков Collabora и Microsoft.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.