Collabora vyvíjí doplněk pro spouštění OpenCL a OpenGL nad DirectX

Společnost Collabora prezentovány nový ovladač Gallium pro Mesa, který implementuje vrstvu pro organizaci práce API OpenCL 1.2 a OpenGL 3.3 nad ovladači podporující DirectX 12 (D3D12). Kód publikováno pod licencí MIT.

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 otevřít nástroje D3D11On12 pro přenos her z D3D11 do D3D12 a knihovny D3D12TranslationLayer, který implementuje standardní grafická primitiva nad D3D12.

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 (Kompilátor DirectX Shader od Microsoftu je v podstatě rozšířený fork LLVM 3.7). Překladač OpenCL je připraven na základě vývoje projektu a nástrojů LLVM SPIRV-LLVM.

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.

Collabora vyvíjí doplněk pro spouštění OpenCL a OpenGL nad DirectX

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

Přidat komentář