Collabora desarrolla un complemento para ejecutar OpenCL y OpenGL sobre DirectX

Colaboración de la empresa presentado un nuevo controlador Gallium para Mesa, que implementa una capa para organizar el trabajo de las API OpenCL 1.2 y OpenGL 3.3 además de los controladores que admiten DirectX 12 (D3D12). Código publicado bajo la licencia del MIT.

El controlador propuesto le permite usar Mesa en dispositivos que no son compatibles de forma nativa con OpenCL y OpenGL, y también como punto de partida para portar aplicaciones OpenGL/OpenCL para que se ejecuten sobre D3D12. Para los fabricantes de GPU, el subsistema permite brindar soporte para OpenCL y OpenGL, si solo hay disponibles controladores con soporte D3D12.

Entre los planes inmediatos se encuentran la superación completa de las pruebas de compatibilidad de OpenCL 1.2 y OpenGL 3.3, la verificación de la compatibilidad con las aplicaciones y la inclusión de desarrollos en la composición principal de Mesa. El desarrollo se lleva a cabo en conjunto con los ingenieros de Microsoft que desarrollan открытый herramientas D3D11En12 para transferir juegos de D3D11 a D3D12 y biblioteca D3D12Capa de traducción, que implementa primitivas gráficas estándar además de D3D12.

La implementación incluye el controlador Gallium, el compilador OpenCL, el tiempo de ejecución OpenCL y el compilador de sombreadores NIR a DXIL, que convierte la representación intermedia de los sombreadores NIR utilizados en Mesa al formato binario DXIL (DirectX Intermediate Language), compatible con DirectX 12 y basado en Código de bits LLVM 3.7 (DirectX Shader Compiler de Microsoft es esencialmente una bifurcación extendida de LLVM 3.7). El compilador OpenCL está preparado en base a los desarrollos del proyecto y las herramientas LLVM. SPIRV-LLVM.

Las fuentes con extensiones OpenCL se compilan usando clang en un pseudocódigo intermedio LLVM (LLVM IR), que luego se convierte en una representación intermedia de los núcleos OpenCL en formato SPIR-V. Los núcleos en la representación SPIR-V se pasan a Mesa, se traducen al formato NIR, se optimizan y se pasan a NIR a DXIL para generar sombreadores informáticos en formato DXIL, adecuados para su ejecución en GPU que utilizan el tiempo de ejecución basado en DirectX 12.
En lugar de Clover, la implementación de OpenCL utilizada en Mesa, se propone un nuevo tiempo de ejecución de OpenCL, que permite conversiones más directas a la API de DirectX 12.

Collabora desarrolla un complemento para ejecutar OpenCL y OpenGL sobre DirectX

Los controladores OpenCL y OpenGL se preparan utilizando la interfaz Gallium proporcionada en Mesa, que le permite crear controladores sin entrar en detalles específicos de OpenGL y traducir las llamadas OpenGL esencialmente más cerca de las primitivas gráficas con las que operan las GPU modernas. Controlador Gallium, acepta comandos OpenGL y cuando se utiliza el traductor NIR a DXIL
Genera búferes de comandos que se ejecutan en la GPU utilizando el controlador D3D12.

Fuente: opennet.ru

Añadir un comentario