Spoločnosť Collabora
Navrhovaný ovládač vám umožňuje používať Mesa na zariadeniach, ktoré natívne nepodporujú OpenCL a OpenGL, a tiež ako východiskový bod pre portovanie aplikácií OpenGL/OpenCL na spustenie nad D3D12. Výrobcom GPU umožňuje subsystém poskytnúť podporu pre OpenCL a OpenGL, ak sú dostupné iba ovládače s podporou D3D12.
Medzi bezprostredné plány patrí dosiahnutie úplného absolvovania testov kompatibility OpenCL 1.2 a OpenGL 3.3, kontrola kompatibility s aplikáciami a zahrnutie vývoja do hlavného zloženia Mesa. Vývoj prebieha v spolupráci s vývojovými inžiniermi spoločnosti Microsoft
Implementácia zahŕňa ovládač Gallium, OpenCL kompilátor, OpenCL runtime a NIR-to-DXIL shader kompilátor, ktorý prevádza prechodnú reprezentáciu NIR shaderov používaných v Mesa do binárneho formátu DXIL (DirectX Intermediate Language), podporovaného v DirectX 12 a založený na LLVM 3.7 bitový kód (
Zdroje s rozšíreniami OpenCL sa skompilujú pomocou clang do intermediárneho pseudokódu LLVM (LLVM IR), ktorý sa potom prevedie na prechodnú reprezentáciu jadier OpenCL vo formáte SPIR-V. Jadrá v reprezentácii SPIR-V sú prenesené do Mesa, preložené do formátu NIR, optimalizované a odovzdané do NIR-to-DXIL na generovanie výpočtových shaderov vo formáte DXIL, vhodných na spustenie na GPU pomocou runtime založeného na DirectX 12.
Namiesto Clover, implementácie OpenCL používanej v Mesa, sa navrhuje nový runtime OpenCL, ktorý umožňuje priamejšie konverzie na rozhranie DirectX 12 API.
Ovládače OpenCL a OpenGL sú pripravené pomocou rozhrania Gallium poskytovaného v Mesa, ktoré vám umožňuje vytvárať ovládače bez toho, aby ste museli ísť do detailov špecifických pre OpenGL, a prekladať volania OpenGL v podstate bližšie ku grafickým primitívom, na ktorých fungujú moderné GPU. Ovládač Gallium, akceptuje príkazy OpenGL a pri použití prekladača NIR-to-DXIL
generuje vyrovnávacie pamäte príkazov, ktoré sa vykonávajú na GPU pomocou ovládača D3D12.
Zdroj: opennet.ru