Windows krijgt in de toekomst ondersteuning voor OpenCL 1.2 en OpenGL 3.3. Dat meldt softwarebedrijf Collabora, dat samenwerkt met Microsoft om de api's naar apparaten met DirectX 12-ondersteuning te brengen. Het is nog onduidelijk wanneer dit gebeurt.
Collabora meldt dat het bedrijf hiervoor gebruikmaakt van de Mesa 3D Graphics Library. Dat is een opensource-implementatie van verschillende grafische technieken, waaronder OpenCL en OpenGL. Collabora gebruikt de Gallium-interface als basis voor de OpenGL-laag. Voor de OpenCL-compiler wordt NIR gebruikt. In de praktijk moet dit project ertoe leiden dat alle apparaten die DirectX 12-ondersteunen, op termijn ook met OpenCL en OpenGL overweg kunnen.
Om OpenCL compatibel te maken met DirectX, gebruiken de ontwikkelaars LLVM en de SPIR-V-LLVM-translator van Khronos om 'SPIR-V-representaties' van de OpenCL-kernel te maken. Deze kernel wordt vervolgens vertaald naar NIR, waar enkele optimalisaties worden doorgevoerd. Uiteindelijk wordt de NIR-kernel vertaald naar DXIL, een programmeertaal voor DirectX. Hiermee kan het worden uitgevoerd op DirectX 12-gpu's.
/i/2003498106.png?f=imagenormal)
Voor OpenGL gebruiken Microsoft en Collabora de Gallium-driver voor D3D12. Deze driver neemt OpenGL-commando's en vertaalt ze naar DXIL, waarna ze via de driver worden uitgevoerd op een DirectX12-gpu. Volgens Collabora komen hier enkele 'interessante details' bij kijken waardoor dit lastig kan worden, maar het bedrijf zegt deze details later te delen.
Collabora meldt wel dat er nog een hoop werk te doen is voordat gebruikers ondersteuning voor OpenCL en OpenGL in hun DirectX12-apparaten kunnen verwachten. Zo moet het bedrijf nog het gewenste feature-level bereiken. Collabora wil de conformiteitstests voor OpenCL 1.2 en OpenGL 3.3 halen. Ook moet nog gewerkt worden aan compatibiliteit met applicaties, waarbij vooralsnog vooral op productiviteitsprogramma's wordt gefocust. Het bedrijf geeft dan ook geen releaseperiode aan. Wel deelt Collabora de broncode van het project. Op termijn moet de broncode te vinden zijn in de Mesa-repository.