Tvrtka Collabora Novi Gallium upravljački program za Mesu, koji implementira sloj za organiziranje rada OpenCL 1.2 i OpenGL 3.3 API-ja preko upravljačkih programa s podrškom za DirectX 12 (D3D12). Kod pod licencom MIT-a.
Predloženi upravljački program omogućuje korištenje Mese na uređajima koji izvorno ne podržavaju OpenCL i OpenGL, kao i početnu točku za prenošenje OpenGL/OpenCL aplikacija za pokretanje na D3D12. Za proizvođače grafičkih procesora, podsustav omogućuje podršku za OpenCL i OpenGL kada upravljački programi podržavaju samo D3D12.
Neposredni planovi uključuju postizanje potpunog testiranja kompatibilnosti s OpenCL 1.2 i OpenGL 3.3, testiranje kompatibilnosti aplikacija i uključivanje ovih dostignuća u osnovnu Mesa platformu. Razvoj se provodi u suradnji s Microsoftovim inženjerima koji razvijaju alata za pretvaranje igara iz D3D11 u D3D12 i biblioteku , koji implementira tipične grafičke primitive povrh D3D12.
Implementacija uključuje Gallium upravljački program, OpenCL kompajler, OpenCL runtime i NIR-to-DXIL shader kompajler koji pretvara međureprezentaciju NIR shadera korištenih u Mesi u binarni DXIL (DirectX Intermediate Language) format podržan u DirectX-u 12 i temeljen na LLVM 3.7 bitcodeu ( od Microsofta je u biti prošireni fork LLVM-a 3.7). OpenCL kompajler se temelji na radu LLVM projekta i alata .
Izvorni kod OpenCL ekstenzije kompilira se pomoću naredbe clang u LLVM međupseudokod (LLVM IR), koji se zatim pretvara u međureprezentaciju OpenCL kernela u SPIR-V formatu. SPIR-V kerneli se prosljeđuju Mesi, prevode u NIR format, optimiziraju i prosljeđuju NIR-u-DXIL za generiranje računalnih shadera u DXIL formatu, pogodnih za izvršavanje na GPU-u pomoću okruženja za izvođenje temeljenog na DirectX 12.
Mesina implementacija OpenCL-a, Clover, zamijenjena je novim OpenCL runtime okruženjem koje omogućuje izravnija mapiranja na DirectX 12 API.
OpenCL i OpenGL upravljački programi napisani su pomoću Gallium sučelja koje pruža Mesa, a koje omogućuje razvoju upravljačkih programa zaobilaženje detalja specifičnih za OpenGL i prevođenje OpenGL poziva u entitete bliže grafičkim primitivima koje koriste moderni GPU-ovi. Gallium upravljački program prihvaća OpenGL naredbe čak i kada se koristi NIR-to-DXIL prevoditelj.
Generira međuspremnike naredbi koji se izvršavaju na GPU-u pomoću D3D12 upravljačkog programa.
Izvor: opennet.ru
