Collabora ontwikkelt een add-on voor het draaien van OpenCL en OpenGL bovenop DirectX

Collabora bedrijf gepresenteerd een nieuwe Gallium-driver voor Mesa, die een laag implementeert voor het organiseren van het werk van de OpenCL 1.2 en OpenGL 3.3 API's bovenop drivers die DirectX 12 (D3D12) ondersteunen. Code gepubliceerde onder de MIT-licentie.

Met het voorgestelde stuurprogramma kunt u Mesa gebruiken op apparaten die OpenCL en OpenGL niet standaard ondersteunen, en ook als startpunt voor het porten van OpenGL/OpenCL-applicaties zodat ze bovenop D3D12 kunnen draaien. Voor GPU-fabrikanten maakt het subsysteem het mogelijk om ondersteuning te bieden voor OpenCL en OpenGL, als er alleen drivers met D3D12-ondersteuning beschikbaar zijn.

Tot de onmiddellijke plannen behoren het behalen van het volledig slagen voor de compatibiliteitstests van OpenCL 1.2 en OpenGL 3.3, het controleren van de compatibiliteit met applicaties en het opnemen van ontwikkelingen in de hoofdsamenstelling van Mesa. De ontwikkeling wordt samen met de ontwikkelaars van Microsoft uitgevoerd открытый hulpmiddelen D3D11Op12 voor het overbrengen van games van D3D11 naar D3D12 en bibliotheek D3D12Vertaallaag, dat standaard grafische primitieven bovenop D3D12 implementeert.

De implementatie omvat de Gallium-driver, OpenCL-compiler, OpenCL-runtime en NIR-naar-DXIL-shader-compiler, die de tussenweergave van NIR-shaders die in Mesa worden gebruikt, omzet in het binaire DXIL-formaat (DirectX Intermediate Language), ondersteund in DirectX 12 en gebaseerd op LLVM 3.7 bitcode (DirectX Shader-compiler van Microsoft is in wezen een uitgebreide vork van LLVM 3.7). De OpenCL-compiler is voorbereid op basis van de ontwikkelingen van het LLVM-project en de tools SPIRV-LLVM.

Bronnen met OpenCL-extensies worden met behulp van clang gecompileerd in LLVM tussenliggende pseudocode (LLVM IR), die vervolgens wordt omgezet in een tussenweergave van OpenCL-kernels in SPIR-V-formaat. Kernen in de SPIR-V-weergave worden doorgegeven aan Mesa, vertaald naar NIR-formaat, geoptimaliseerd en doorgegeven aan NIR-to-DXIL om compute shaders in DXIL-formaat te genereren, geschikt voor uitvoering op GPU's met behulp van DirectX 12-gebaseerde runtime.
In plaats van Clover, de OpenCL-implementatie die in Mesa wordt gebruikt, wordt een nieuwe OpenCL-runtime voorgesteld, waardoor directere conversies naar de DirectX 12 API mogelijk zijn.

Collabora ontwikkelt een add-on voor het draaien van OpenCL en OpenGL bovenop DirectX

OpenCL- en OpenGL-stuurprogramma's worden voorbereid met behulp van de Gallium-interface in Mesa, waarmee u stuurprogramma's kunt maken zonder op OpenGL-specifieke details in te gaan en OpenGL-aanroepen in essentie dichter bij de grafische primitieven kunt vertalen waarop moderne GPU's werken. Gallium-stuurprogramma, accepteert OpenGL-opdrachten en bij gebruik van de NIR-naar-DXIL-vertaler
genereert opdrachtbuffers die worden uitgevoerd op de GPU met behulp van het D3D12-stuurprogramma.

Bron: opennet.ru

Voeg een reactie