Collabora cég
A javasolt illesztőprogram lehetővé teszi a Mesa használatát olyan eszközökön, amelyek natívan nem támogatják az OpenCL-t és az OpenGL-t, valamint kiindulási pontként az OpenGL/OpenCL-alkalmazások D3D12-n történő futtatásához. A GPU-gyártók számára az alrendszer lehetővé teszi az OpenCL és az OpenGL támogatását, ha csak D3D12 támogatással rendelkező illesztőprogramok állnak rendelkezésre.
A közvetlen tervek között szerepel az OpenCL 1.2 és OpenGL 3.3 kompatibilitási tesztjeinek teljes teljesítése, az alkalmazásokkal való kompatibilitás ellenőrzése és a fejlesztések beépítése a Mesa fő összetételébe. A fejlesztést a Microsoft mérnökeivel közösen végzik
A megvalósítás tartalmazza a Gallium illesztőprogramot, az OpenCL fordítót, az OpenCL futtatókörnyezetet és a NIR-DXIL shader fordítót, amely a Mesa-ban használt NIR shaderek közbenső reprezentációját a DirectX 12-ben támogatott DXIL (DirectX Intermediate Language) bináris formátummá alakítja át. LLVM 3.7 bitkód (
Az OpenCL-kiterjesztésekkel rendelkező forrásokat a clang segítségével LLVM intermediate pszeudokódba (LLVM IR) fordítják, amelyet azután az OpenCL kernelek köztes reprezentációjává alakítanak át SPIR-V formátumban. A SPIR-V reprezentációban lévő magokat a Mesa-ba továbbítják, NIR formátumba fordítják, optimalizálják és átadják a NIR-DXIL-nek, hogy DXIL formátumú számítási shadereket hozzanak létre, amelyek alkalmasak a DirectX 12 alapú futásidejű GPU-kon történő végrehajtásra.
A Clover, a Mesa-ban használt OpenCL-megvalósítás helyett egy új OpenCL-futási környezet javasolt, amely lehetővé teszi a közvetlenebb konverziókat a DirectX 12 API-ra.
Az OpenCL és az OpenGL illesztőprogramok a Mesa által biztosított Gallium interfész segítségével készülnek, amely lehetővé teszi, hogy meghajtókat készítsen anélkül, hogy belemenne az OpenGL-specifikus részletekbe, és lényegében közelebb fordíthatja az OpenGL-hívásokat a modern GPU-k által használt grafikus primitívekhez. Gallium illesztőprogram, elfogadja az OpenGL parancsokat és a NIR-DXIL fordító használatakor
parancspuffereket állít elő, amelyeket a GPU-n a D3D12 illesztőprogram segítségével hajtanak végre.
Forrás: opennet.ru