Kompanija Collabora
Predloženi drajver vam omogućava da koristite Mesa na uređajima koji izvorno ne podržavaju OpenCL i OpenGL, a takođe i kao polaznu tačku za prenos OpenGL/OpenCL aplikacija za pokretanje na D3D12. Za proizvođače GPU-a, podsistem omogućava pružanje podrške za OpenCL i OpenGL, ako su dostupni samo drajveri sa podrškom za D3D12.
Među neposrednim planovima su postizanje potpunog prolaska testova kompatibilnosti OpenCL 1.2 i OpenGL 3.3, provjera kompatibilnosti sa aplikacijama i uključivanje razvoja u glavni sastav Mese. Razvoj se odvija zajedno sa Microsoft inženjerima koji razvijaju
Implementacija uključuje Gallium drajver, OpenCL kompajler, OpenCL runtime i NIR-to-DXIL shader kompajler, koji pretvara posredni prikaz NIR shadera koji se koriste u Mesi u binarni format DXIL (DirectX Intermediate Language), podržan u DirectX 12 i zasnovan na LLVM 3.7 bitni kod (
Izvori sa OpenCL ekstenzijama se kompajliraju koristeći clang u LLVM srednji pseudokod (LLVM IR), koji se zatim konvertuje u srednji prikaz OpenCL kernela u SPIR-V formatu. Jezgra u SPIR-V reprezentaciji se prosleđuju u Mesa, prevode u NIR format, optimizuju i prosleđuju u NIR-to-DXIL da bi se generisali računarski shaderi u DXIL formatu, pogodni za izvršavanje na GPU-ovima koji koriste DirectX 12-bazirano runtime.
Umjesto Clover-a, OpenCL implementacije koja se koristi u Mesi, predloženo je novo OpenCL runtime, omogućavajući direktnije konverzije u DirectX 12 API.
OpenCL i OpenGL drajveri su pripremljeni pomoću Gallium interfejsa koji se nalazi u Mesi, koji vam omogućava da kreirate drajvere bez ulaženja u detalje specifične za OpenGL i prevedete OpenGL pozive u suštini bliže grafičkim primitivima na kojima rade moderni GPU-ovi. Gallium drajver, prihvata OpenGL komande i kada se koristi NIR-to-DXIL translator
generira bafere komandi koji se izvršavaju na GPU-u pomoću D3D12 drajvera.
izvor: opennet.ru