Collabora razvija dodatak za pokretanje OpenCL i OpenGL na vrhu DirectX-a

Kompanija Collabora predstavljen novi Gallium drajver za Mesu, koji implementira sloj za organizovanje rada OpenCL 1.2 i OpenGL 3.3 API-ja na vrhu drajvera koji podržavaju DirectX 12 (D3D12). Kod objavljeno pod MIT licencom.

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 otvoren alata D3D11On12 za prijenos igara sa D3D11 na D3D12 i biblioteku D3D12TranslationLayer, koji implementira standardne grafičke primitive na vrhu D3D12.

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 (Kompajler za DirectX Shader od Microsofta je u suštini prošireni fork LLVM 3.7). OpenCL kompajler je pripremljen na osnovu razvoja LLVM projekta i alata SPIRV-LLVM.

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.

Collabora razvija dodatak za pokretanje OpenCL i OpenGL na vrhu DirectX-a

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

Dodajte komentar