Collabora dezvoltă un driver pentru OpenCL și OpenGL deasupra DirectX

Compania Collabora a prezentat noul driver Gallium pentru Mesa, care implementează un strat pentru gestionarea API-urilor OpenCL 1.2 și OpenGL 3.3 peste driverele cu suport pentru DirectX 12 (D3D12). Cod publicat sub licența MIT.

Driverul propus permite utilizarea Mesa pe dispozitive care nu suportă în mod inițial OpenCL și OpenGL, precum și ca un punct de plecare pentru portarea aplicațiilor OpenGL/OpenCL pentru a funcționa peste D3D12. Pentru producătorii de GPU, subsystema oferă posibilitatea de a furniza suport pentru OpenCL și OpenGL, având doar drivere cu suport pentru D3D12.

Printre planurile apropiate se numără atingerea trecerii complete a testelor de compatibilitate pentru OpenCL 1.2 și OpenGL 3.3, verificarea compatibilității cu aplicațiile și includerea dezvoltărilor în compunerea principală a Mesa. Dezvoltarea se desfășoară împreună cu inginerii Microsoft care dezvoltă deschis un instrumentar D3D11On12 pentru a traduce jocurile de la D3D11 la D3D12 și biblioteca D3D12TranslationLayer, care implementează primitive grafice tipice peste D3D12.

Implementarea include driverul Gallium, compilatorul OpenCL, runtime-ul OpenCL și compilatorul de shader-e NIR-to-DXIL, care transformă reprezentarea intermediară a shader-elor NIR utilizată în Mesa în formatul binar DXIL (DirectX Intermediate Language), suportat în DirectX 12 și bazat pe bytecode LLVM 3.7 (DirectX Shader Compiler de la Microsoft, un fork extins al LLVM 3.7). Compilatorul OpenCL este pregătit pe baza realizărilor proiectului LLVM și a uneltelor SPIRV-LLVM.

Codurile sursă cu extensiile OpenCL sunt compilate cu clang în pseudocod intermediar LLVM (LLVM IR), care este apoi transformat în reprezentarea intermediară a nucleelor OpenCL în format SPIR-V. Nucleele în reprezentarea SPIR-V sunt transmise în Mesa, sunt traduse în format NIR, optimizate și transmise în NIR-to-DXIL pentru generarea shader-elor de calcul în format DXIL, potrivite pentru a fi rulate pe GPU utilizând un runtime bazat pe DirectX 12.
În loc de Clover, utilizată în implementarea Mesa a OpenCL, a fost propus un nou runtime OpenCL, care permite mai multe transformări directe în API-ul DirectX 12.

Collabora dezvoltă un driver pentru OpenCL și OpenGL deasupra DirectX

Driverele OpenCL și OpenGL sunt pregătite folosind interfața Gallium oferită în Mesa, care permite, la crearea driverelor, să nu se adâncească în detalii specifice OpenGL și să transpună apelurile OpenGL în entități mai apropiate de primitivele grafice cu care operează GPU-urile moderne. Driverul Gallium primește comenzi OpenGL și, cu ajutorul translatorului NIR-to-DXIL.
formează buffer-e de comenzi care sunt executate pe GPU, utilizând driverul D3D12.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster