Společnost Collabora
Navrhovaný ovladač vám umožňuje používat Mesa na zařízeních, která nativně nepodporují OpenCL a OpenGL, a také jako výchozí bod pro portování aplikací OpenGL/OpenCL tak, aby běžely na D3D12. Výrobcům GPU umožňuje subsystém poskytovat podporu pro OpenCL a OpenGL, pokud jsou k dispozici pouze ovladače s podporou D3D12.
Mezi nejbližší plány patří dosažení úplného absolvování testů kompatibility OpenCL 1.2 a OpenGL 3.3, kontrola kompatibility s aplikacemi a zahrnutí vývoje do hlavního složení Mesa. Vývoj probíhá společně s vývojáři Microsoftu
Implementace zahrnuje ovladač Gallium, OpenCL kompilátor, OpenCL runtime a NIR-to-DXIL shader kompilátor, který převádí střední reprezentaci NIR shaderů používaných v Mesa do binárního formátu DXIL (DirectX Intermediate Language), podporovaného v DirectX 12 a založeného na LLVM 3.7 bitový kód (
Zdroje s rozšířením OpenCL jsou kompilovány pomocí clang do zprostředkujícího pseudokódu LLVM (LLVM IR), který je následně převeden na přechodnou reprezentaci OpenCL jader ve formátu SPIR-V. Jádra v reprezentaci SPIR-V jsou předávána do Mesa, překládána do formátu NIR, optimalizována a předávána do NIR-to-DXIL za účelem generování výpočetních shaderů ve formátu DXIL, vhodných pro spuštění na GPU pomocí běhového prostředí založeného na DirectX 12.
Namísto Clover, implementace OpenCL používané v Mesa, je navrženo nové runtime OpenCL, které umožňuje přímější převody na rozhraní DirectX 12 API.
Ovladače OpenCL a OpenGL jsou připravovány pomocí rozhraní Gallium poskytovaného v Mesa, které vám umožňuje vytvářet ovladače, aniž byste museli zacházet do podrobností specifických pro OpenGL, a překládat volání OpenGL v podstatě blíže grafickým primitivům, na kterých pracují moderní GPU. Ovladač Gallium, přijímá příkazy OpenGL a při použití překladače NIR do DXIL
generuje vyrovnávací paměti příkazů, které se spouštějí na GPU pomocí ovladače D3D12.
Zdroj: opennet.ru