Collabora desenvolve um add-on para rodar OpenCL e OpenGL em cima de DirectX

Empresa Colabora apresentado um novo driver Gallium para Mesa, que implementa uma camada para organizar o trabalho das APIs OpenCL 1.2 e OpenGL 3.3 sobre drivers que suportam DirectX 12 (D3D12). Código publicado sob a licença do MIT.

O driver proposto permite que você use o Mesa em dispositivos que não suportam nativamente OpenCL e OpenGL, e também como ponto de partida para portar aplicativos OpenGL/OpenCL para execução em D3D12. Para fabricantes de GPU, o subsistema permite fornecer suporte para OpenCL e OpenGL, desde que apenas drivers com suporte D3D12 estejam disponíveis.

Entre os planos imediatos estão a obtenção de aprovação integral nos testes de compatibilidade do OpenCL 1.2 e OpenGL 3.3, verificação de compatibilidade com aplicações e inclusão de desenvolvimentos na composição principal do Mesa. O desenvolvimento é realizado em conjunto com engenheiros da Microsoft que desenvolvem aberto ferramentas D3D11On12 para transferir jogos de D3D11 para D3D12 e biblioteca Camada de tradução D3D12, que implementa primitivas gráficas padrão sobre D3D12.

A implementação inclui o driver Gallium, o compilador OpenCL, o tempo de execução OpenCL e o compilador de shader NIR-to-DXIL, que converte a representação intermediária dos shaders NIR usados ​​no Mesa no formato binário DXIL (DirectX Intermediate Language), suportado no DirectX 12 e baseado em Código de bits LLVM 3.7 (Compilador DirectX Shader da Microsoft é essencialmente um fork estendido do LLVM 3.7). O compilador OpenCL é preparado com base nos desenvolvimentos do projeto e ferramentas LLVM SPIRV-LLVM.

Fontes com extensões OpenCL são compiladas usando clang em pseudocódigo intermediário LLVM (LLVM IR), que é então convertido em uma representação intermediária de kernels OpenCL no formato SPIR-V. Os núcleos na representação SPIR-V são passados ​​para o Mesa, traduzidos para o formato NIR, otimizados e passados ​​para NIR para DXIL para gerar shaders de computação no formato DXIL, adequados para execução em GPUs usando tempo de execução baseado em DirectX 12.
Em vez do Clover, a implementação OpenCL usada no Mesa, é proposto um novo tempo de execução OpenCL, permitindo conversões mais diretas para a API DirectX 12.

Collabora desenvolve um add-on para rodar OpenCL e OpenGL em cima de DirectX

Os drivers OpenCL e OpenGL são preparados usando a interface Gallium fornecida no Mesa, que permite criar drivers sem entrar em detalhes específicos do OpenGL e traduzir as chamadas OpenGL em essência mais próximas das primitivas gráficas nas quais as GPUs modernas operam. Driver Gallium, aceita comandos OpenGL e ao usar o tradutor NIR para DXIL
gera buffers de comando que são executados na GPU usando o driver D3D12.

Fonte: opennet.ru

Adicionar um comentário