Компания 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 и компилатор на шейдери NIR-to-DXIL (D3D12 runtime), който преобразува интерналното представяне на шейдери NIR, използвани в Mesa, в бинарен формат 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. Отделно се развиват компоненти за осигуряване на работа на OpenCL върху D3D12, включващи компилатор OpenCL и OpenCL runtime.
Източник: opennet.ru
