A Microsoft e a Collabora estão trabalhando juntas para mapear o OpenGL/OpenCL pelo DirectX 12. A parceria inédita foi anunciada pelas duas empresas e tem por objetivo a criação de camadas de mapeamento OpenCL e OpenGL sobre DirectX (D3D12). O foco está em fornecer suporte ao OpenCL 1.2 e OpenGL 3.3 para todas as versões do Windows em dispositivos habilitados para DirectX 12. Portanto, este nada mais é que um novo passo da gigante Microsoft rumo ao código aberto, mesmo com a união de um concorrente como a Collabora, que também produz uma versão turbinada do LibreOffice, concorrente do Office da Microsoft.
Microsoft e Collabora trabalhando para mapear o OpenGL/OpenCL pelo DirectX 12
Essa iniciativa está aproveitando o código existente no Mesa, LLVM e no tradutor SPIRV-LLVM por oferecer o OpenGL 3.3 e OpenCL 1.2 sobre o Vulkan. O suporte ao OpenCL está sendo desenvolvido em parte pelo rastreador Clover Gallium3D. A intenção é fornecer uma camada genérica que ofereça qualquer sistema habilitado para D3D12 para ter acesso ao OpenGL 3.3 e OpenCL 1.2. Do ponto de vista da Microsoft, eles esperam que ajude os desenvolvedores a fazer a transição do OpenCL e OpenGL mais antigo para o D3D12.
Como parte do trabalho de Collabora, eles estão trabalhando em uma representação intermediária do Mesa NIR para o compilador de shader Microsoft DXIL, bem como em um driver Direct3D 12 Gallium3D.
No momento, não parece haver planos imediatos para oferecer suporte ao OpenCL 2.x ou OpenGL 4.x por este trabalho. Ainda parece que eles têm algumas maneiras de alcançar a conformidade com o OpenGL 3.3 e OpenCL 1.2. Uma vez que o código esteja em melhor forma, eles pretendem fazer o upstream das partes relevantes do Mesa.
O que dizem
Estamos em parceria com os engenheiros do Microsoft DirectX para criar camadas de mapeamento OpenCL e OpenGL, a fim de oferecer suporte ao OpenCL 1.2 e OpenGL 3.3 a todos os dispositivos habilitados para Windows e DirectX 12!
Este trabalho se baseia em muitos trabalhos anteriores. Em primeiro lugar, estamos construindo isso usando o Mesa 3D , com a interface Gallium como base para a camada OpenGL e o NIR como base para o compilador OpenCL. Também estamos usando o LLVM e o SPIRV-LLVM-Translator da Khronos como front-end do compilador.
Além disso, estamos aproveitando a experiência da Microsoft na criação da Camada de tradução D3D12, bem como a nossa própria experiência no desenvolvimento do Zink, afirma o desenvolvedor Erik Faye-Lund.
Mais detalhes sobre essa parceria da Microsoft através do blog Collabora.