Компания Collabora
Предложеният драйвер ви позволява да използвате Mesa на устройства, които не поддържат първоначално OpenCL и OpenGL, а също и като отправна точка за пренасяне на OpenGL/OpenCL приложения, които да работят върху D3D12. За производителите на графични процесори подсистемата дава възможност да се осигури поддръжка за OpenCL и OpenGL, ако са налични само драйвери с поддръжка на D3D12.
Сред непосредствените планове са постигането на пълно преминаване на тестовете за съвместимост на OpenCL 1.2 и OpenGL 3.3, проверка на съвместимостта с приложенията и включването на разработки в основния състав на Mesa. Разработката се извършва съвместно с разработващите инженери на Microsoft
Внедряването включва драйвер Gallium, OpenCL компилатор, време за изпълнение на OpenCL и компилатор на шейдъри NIR към DXIL, който преобразува междинното представяне на NIR шейдъри, използвани в Mesa, в двоичен формат DXIL (DirectX Intermediate Language), поддържан в DirectX 12 и базиран на LLVM 3.7 битов код (
Източниците с OpenCL разширения се компилират с помощта на clang в междинен псевдокод на LLVM (LLVM IR), който след това се преобразува в междинно представяне на OpenCL ядра във формат SPIR-V. Ядрата в представянето на SPIR-V се предават в Mesa, превеждат се във формат NIR, оптимизират се и се предават на NIR към DXIL за генериране на изчислителни шейдъри във формат DXIL, подходящи за изпълнение на графични процесори, използващи среда за изпълнение, базирана на DirectX 12.
Вместо Clover, внедряването на OpenCL, използвано в Mesa, се предлага ново време за изпълнение на OpenCL, което позволява по-директни преобразувания към DirectX 12 API.
Драйверите за OpenCL и OpenGL са подготвени с помощта на интерфейса Gallium, предоставен в Mesa, който ви позволява да създавате драйвери, без да навлизате в специфични за OpenGL подробности и да превеждате OpenGL извикванията по същество по-близо до графичните примитиви, с които работят съвременните GPU. Gallium драйвер, приема OpenGL команди и когато използва преводача NIR към DXIL
генерира командни буфери, които се изпълняват на GPU с помощта на драйвера D3D12.
Източник: opennet.ru