A Collabora cég Új Gallium-illesztőprogram a Mesa számára, amely egy réteget valósít meg az OpenCL 1.2 és OpenGL 3.3 API-k DirectX 12 (D3D12) támogatásán alapuló illesztőprogramok felett való működéséhez. Kód MIT licenc alatt áll.
A javasolt illesztőprogram lehetővé teszi a Mesa használatát olyan eszközökön, amelyek kezdetben nem támogatták az OpenCL-t és az OpenGL-t, valamint kiindulási alapként szolgál az OpenGL/OpenCL-alkalmazások D3D12 feletti portolásához. A GPU-gyártók számára a rendszer lehetőséget ad arra, hogy OpenCL és OpenGL támogatást nyújtsanak, ha csak D3D12-t támogató illesztőprogramok állnak rendelkezésre.
A közeljövő tervei között szerepel az OpenCL 1.2 és OpenGL 3.3 kompatibilitási tesztjeinek teljesítése, az alkalmazásokkal való kompatibilitás ellenőrzése és a fejlesztések integrálása a Mesa fő összetételébe. A fejlesztés a Microsoft mérnökeivel együtt zajlik, akik a eszközkészlet megoldásért felelős, amely lehetővé teszi a játékok átkonvertálását D3D11-ről D3D12-re, és a , amely a D3D12 felett valósítja meg az alap grafikai primitíveket.
A megvalósítás magában foglalja a Gallium-illesztőprogramot, az OpenCL fordítót, az OpenCL futtatókörnyezetet és a NIR-to-DXIL árnyékoló fordítót, amely a Mesa-ban alkalmazott NIR köztes representációt átfordítja a DirectX 12 által támogatott DXIL (DirectX Intermediate Language) formátumba, amely az LLVM 3.7 bitkódján alapul ( a Microsoft-tól, amely lényegében egy kibővített LLVM 3.7 ágazat). Az OpenCL fordító az LLVM projekten és eszközkészleten alapul. .
Az OpenCL kiterjesztésekkel rendelkező forráskódok a clang segítségével LLVM-féle köztes pszeudokódra (LLVM IR) fordítódnak, amelyet ezután SPIR-V formátumú OpenCL-yderek köztes reprezentációjára alakítanak. A SPIR-V-ben lévő magokat a Mesa-n keresztül továbbítják, átkonvertálják NIR formátumba, optimalizálják, és átadják a NIR-to-DXIL-nek a DXIL formátumú számítási árnyékolók generálására, amelyek a DirectX 12-alapú GPU-kon futtathatók.
A Clover helyett, amelyet a Mesa OpenCL-implementációjában alkalmaztak, új OpenCL futtatókörnyezetet javasolnak, amely lehetővé teszi, hogy több közvetlen átalakítást végezzen a DirectX 12 API-ba.
Az OpenCL és OpenGL illesztőprogramokat a Mesa által nyújtott Gallium interfész felhasználásával készítették, lehetővé téve az illesztőprogramok létrehozása során, hogy ne merüljön el az OpenGL-re jellemző részletekben, és az OpenGL hívásokat a modern GPU-k által kezelhető grafikai primitívekhez közelálló entitásokra fordítsák. A Gallium-illesztőprogram az OpenGL parancsokat fogadja, a NIR-to-DXIL fordító bevonásával.
parancsbufereket képez, amelyeket a GPU-n hajtanak végre a D3D12 drivert használva.
Forrás: opennet.ru
