Empresa colaboradora
O controlador proposto permítelle usar Mesa en dispositivos que non admiten de forma nativa OpenCL e OpenGL, e tamén como punto de partida para portar aplicacións OpenGL/OpenCL para executalas enriba de D3D12. Para os fabricantes de GPU, o subsistema permite ofrecer compatibilidade con OpenCL e OpenGL, se só están dispoñibles controladores con compatibilidade con D3D12.
Entre os plans inmediatos están a consecución da superación total das probas de compatibilidade de OpenCL 1.2 e OpenGL 3.3, a comprobación da compatibilidade coas aplicacións e a inclusión de desenvolvementos na composición principal de Mesa. O desenvolvemento realízase conxuntamente cos enxeñeiros de Microsoft en desenvolvemento
A implementación inclúe o controlador Gallium, o compilador OpenCL, o tempo de execución de OpenCL e o compilador de sombreadores NIR a DXIL, que converte a representación intermedia dos sombreadores NIR usados en Mesa no formato binario DXIL (DirectX Intermediate Language), compatible con DirectX 12 e baseado en Código de bits LLVM 3.7 (
As fontes con extensións OpenCL compílanse usando clang en pseudocódigo intermedio LLVM (LLVM IR), que despois se converte nunha representación intermedia dos núcleos OpenCL en formato SPIR-V. Os núcleos da representación SPIR-V pásanse a Mesa, tradúcense ao formato NIR, optimízanse e pásanse a NIR a DXIL para xerar sombreadores de cálculo en formato DXIL, axeitados para a execución en GPU usando o tempo de execución baseado en DirectX 12.
En lugar de Clover, a implementación OpenCL utilizada en Mesa, proponse un novo tempo de execución de OpenCL, que permite conversións máis directas á API de DirectX 12.
Os controladores OpenCL e OpenGL prepáranse mediante a interface Gallium proporcionada en Mesa, que lle permite crear controladores sen entrar en detalles específicos de OpenGL e traducir as chamadas OpenGL en esencia máis preto das primitivas gráficas coas que operan as GPU modernas. Controlador Gallium, acepta comandos OpenGL e cando se utiliza o tradutor NIR a DXIL
xera buffers de comandos que se executan na GPU usando o controlador D3D12.
Fonte: opennet.ru