Collabora razvija dodatak za pokretanje OpenCL-a i OpenGL-a povrh DirectX-a

Tvrtka Collabora predstavio 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 objavljen 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 otvoreno alata D3D11Na12 za pretvaranje igara iz D3D11 u D3D12 i biblioteku D3D12 Sloj prijevoda, 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 (DirectX Shader kompajler od Microsofta je u biti prošireni fork LLVM-a 3.7). OpenCL kompajler se temelji na radu LLVM projekta i alata SPIRV-LLVM.

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.

 Collabora razvija dodatak za pokretanje OpenCL-a i OpenGL-a povrh DirectX-a

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