Collabora ontwikkelt een uitbreiding voor het werken met OpenCL en OpenGL bovenop DirectX

Collabora heeft geĆÆntroduceerd Nieuwe Gallium-driver voor Mesa, die een laag implementeert voor het beheren van de API OpenCL 1.2 en OpenGL 3.3 bovenop stuurprogramma's die ondersteuning bieden voor DirectX 12 (D3D12). Code gepubliceerd valt onder de MIT-licentie.

De voorgestelde driver maakt het mogelijk om Mesa te gebruiken op apparaten die oorspronkelijk geen OpenCL en OpenGL ondersteunen, en dient ook als startpunt voor het porteren van OpenGL/OpenCL-toepassingen voor gebruik bovenop D3D12. Voor GPU-fabrikanten biedt de subsystem de mogelijkheid om ondersteuning voor OpenCL en OpenGL te bieden, mits ze alleen stuurprogramma's met ondersteuning voor D3D12 hebben.

Een van de komende plannen is het bereiken van volledige compatibiliteitstests voor OpenCL 1.2 en OpenGL 3.3, het controleren van de compatibiliteit met toepassingen en het opnemen van de bevindingen in de hoofdversie van Mesa. De ontwikkeling vindt plaats in samenwerking met ingenieurs van Microsoft, die open source hulpmiddelen D3D11On12 voor het vertalen van games van D3D11 naar D3D12 en de bibliotheek D3D12TranslationLayer, die standaard grafische primitieven bovenop D3D12 implementeert.

De implementatie omvat de Gallium-driver, de OpenCL-compiler, de OpenCL-runtime en de NIR-to-DXIL shadercompiler, die de in Mesa gebruikte tussenrepresentatie van shaders NIR omzet naar het binaire formaat DXIL (DirectX Intermediate Language), dat wordt ondersteund in DirectX 12 en gebaseerd is op LLVM 3.7-bitcode (DirectX Shader Compiler van Microsoft, feitelijk een uitgebreide fork van LLVM 3.7). De OpenCL-compiler is ontwikkeld op basis van de bevindingen van het LLVM-project en de hulpmiddelen SPIRV-LLVM.

Bronbestanden met OpenCL-uitbreidingen worden gecompileerd met clang naar tussen-pseudocode in LLVM (LLVM IR), dat vervolgens wordt omgezet naar de tussenrepresentatie van OpenCL-kernels in SPIR-V-formaat. De kernels in SPIR-V-representatie worden naar Mesa gestuurd, vertaald naar NIR-formaat, geoptimaliseerd en doorgestuurd naar NIR-to-DXIL voor het genereren van compute shaders in DXIL-formaat, klaar voor uitvoering op GPU met behulp van runtime op basis van DirectX 12.
In plaats van Clover, dat wordt toegepast in de Mesa-implementatie van OpenCL, is er een nieuwe OpenCL-runtime voorgesteld die meer directe conversies naar de API DirectX 12 toestaat.

Collabora ontwikkelt een uitbreiding voor het werken met OpenCL en OpenGL bovenop DirectX

OpenCL- en OpenGL-stuurprogramma's zijn voorbereid met behulp van de door Mesa aangeboden Gallium-interface, die bij het maken van stuurprogramma's voorkomt dat men zich verdiept in OpenGL-specifieke details en de aanroepen van OpenGL omzet in entiteiten die dichter bij de grafische primitieven liggen waarmee moderne GPU's werken. De Gallium-driver accepteert OpenGL-commando's en maakt gebruik van de NIR-to-DXIL-translator.
vormt commando-buffers die worden uitgevoerd op de GPU, met gebruik van de D3D12-driver.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster