Collabora bedrijf
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
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 (
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.
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