Collabora desenvolve un complemento para executar OpenCL e OpenGL enriba de DirectX

Empresa colaboradora presentado un novo controlador Gallium para Mesa, que implementa unha capa para organizar o traballo das API OpenCL 1.2 e OpenGL 3.3 ademais dos controladores compatibles con DirectX 12 (D3D12). Código publicado baixo a licenza MIT.

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 aberto ferramentas D3D11On12 para transferir xogos de D3D11 a D3D12 e biblioteca Capa de tradución D3D12, que implementa primitivas gráficas estándar enriba de D3D12.

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 (Compilador de DirectX Shader de Microsoft é esencialmente un fork estendido de LLVM 3.7). O compilador OpenCL prepárase en función dos desenvolvementos do proxecto e das ferramentas LLVM SPIRV-LLVM.

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.

Collabora desenvolve un complemento para executar OpenCL e OpenGL enriba de DirectX

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

Engadir un comentario