Compania Collabora
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
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 (
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.
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