Collabora dezvoltă un supliment pentru rularea OpenCL și OpenGL pe DirectX

Compania Collabora prezentat un nou driver Gallium pentru Mesa, care implementează un strat pentru organizarea activității API-urilor OpenCL 1.2 și OpenGL 3.3 pe deasupra driverelor care acceptă DirectX 12 (D3D12). Cod publicat sub licența MIT.

Driverul propus vă permite să utilizați Mesa pe dispozitive care nu acceptă în mod nativ OpenCL și OpenGL și, de asemenea, ca punct de plecare pentru portarea aplicațiilor OpenGL/OpenCL pentru a rula pe D3D12. Pentru producătorii de GPU, subsistemul face posibilă furnizarea de suport pentru OpenCL și OpenGL, dacă sunt disponibile doar drivere cu suport D3D12.

Printre planurile imediate se numără realizarea trecerii complete a testelor de compatibilitate OpenCL 1.2 și OpenGL 3.3, verificarea compatibilității cu aplicațiile și includerea dezvoltărilor în componența principală a Mesa. Dezvoltarea este realizată împreună cu inginerii Microsoft în dezvoltare deschis unelte D3D11On12 pentru transferul de jocuri de la D3D11 la D3D12 și bibliotecă D3D12TranslationLayer, care implementează primitive grafice standard peste D3D12.

Implementarea include driverul Gallium, compilatorul OpenCL, runtime OpenCL și compilatorul shader NIR-to-DXIL, care convertește reprezentarea intermediară a shaderelor NIR utilizate în Mesa în formatul binar DXIL (DirectX Intermediate Language), suportat în DirectX 12 și bazat pe Cod de biți LLVM 3.7 (DirectX Shader Compiler de la Microsoft este în esență un furk extins al LLVM 3.7). Compilatorul OpenCL este pregătit pe baza dezvoltărilor proiectului și instrumentelor LLVM SPIRV-LLVM.

Sursele cu extensii OpenCL sunt compilate folosind clang în pseudocod intermediar LLVM (LLVM IR), care este apoi convertit într-o reprezentare intermediară a nucleelor ​​OpenCL în format SPIR-V. Nucleele din reprezentarea SPIR-V sunt trecute în Mesa, traduse în format NIR, optimizate și transmise la NIR-la-DXIL pentru a genera shadere de calcul în format DXIL, potrivite pentru execuție pe GPU-uri folosind runtime bazate pe DirectX 12.
În loc de Clover, implementarea OpenCL folosită în Mesa, este propus un nou timp de rulare OpenCL, permițând mai multe conversii directe la API-ul DirectX 12.

Collabora dezvoltă un supliment pentru rularea OpenCL și OpenGL pe DirectX

Driverele OpenCL și OpenGL sunt pregătite folosind interfața Gallium furnizată în Mesa, care vă permite să creați drivere fără a intra în detalii specifice OpenGL și să traduceți apelurile OpenGL în esență mai aproape de primitivele grafice pe care operează GPU-urile moderne. Driver Gallium, acceptă comenzi OpenGL și când folosește traducătorul NIR-la-DXIL
generează buffer-uri de comandă care sunt executate pe GPU utilizând driverul D3D12.

Sursa: opennet.ru

Adauga un comentariu