Collabora sviluppa un componente aggiuntivo per eseguire OpenCL e OpenGL su DirectX

Azienda Collabora presentato un nuovo driver Gallium per Mesa, che implementa un livello per organizzare il lavoro delle API OpenCL 1.2 e OpenGL 3.3 sopra i driver che supportano DirectX 12 (D3D12). Codice pubblicato con licenza MIT.

Il driver proposto consente di utilizzare Mesa su dispositivi che non supportano nativamente OpenCL e OpenGL e anche come punto di partenza per il porting di applicazioni OpenGL/OpenCL da eseguire su D3D12. Per i produttori di GPU il sottosistema consente di fornire il supporto per OpenCL e OpenGL, se sono disponibili solo driver con supporto D3D12.

Tra i piani immediati figurano il raggiungimento del pieno superamento dei test di compatibilità di OpenCL 1.2 e OpenGL 3.3, la verifica della compatibilità con le applicazioni e l'inclusione degli sviluppi nella composizione principale di Mesa. Lo sviluppo viene effettuato in collaborazione con gli ingegneri Microsoft che si occupano di sviluppo открытый utensili D3D11On12 per trasferire giochi da D3D11 a D3D12 e libreria D3D12TranslationLayer, che implementa le primitive grafiche standard su D3D12.

L'implementazione include il driver Gallium, il compilatore OpenCL, il runtime OpenCL e il compilatore shader NIR-to-DXIL, che converte la rappresentazione intermedia degli shader NIR utilizzati in Mesa nel formato binario DXIL (DirectX Intermediate Language), supportato in DirectX 12 e basato su Codice bit LLVM 3.7 (DirectX Shader Compiler di Microsoft è essenzialmente un fork esteso di LLVM 3.7). Il compilatore OpenCL è preparato sulla base degli sviluppi del progetto e degli strumenti LLVM SPIRV-LLVM.

I sorgenti con estensioni OpenCL vengono compilati utilizzando clang nello pseudocodice intermedio LLVM (LLVM IR), che viene quindi convertito in una rappresentazione intermedia dei kernel OpenCL in formato SPIR-V. I core nella rappresentazione SPIR-V vengono passati a Mesa, tradotti in formato NIR, ottimizzati e passati a NIR-to-DXIL per generare shader di calcolo in formato DXIL, adatti per l'esecuzione su GPU utilizzando il runtime basato su DirectX 12.
Invece di Clover, l'implementazione OpenCL utilizzata in Mesa, viene proposto un nuovo runtime OpenCL, che consente conversioni più dirette all'API DirectX 12.

Collabora sviluppa un componente aggiuntivo per eseguire OpenCL e OpenGL su DirectX

I driver OpenCL e OpenGL vengono preparati utilizzando l'interfaccia Gallium fornita in Mesa, che consente di creare driver senza entrare nei dettagli specifici di OpenGL e tradurre le chiamate OpenGL in sostanza più vicine alle primitive grafiche su cui operano le moderne GPU. Driver Gallium, accetta comandi OpenGL e quando si utilizza il traduttore NIR-to-DXIL
genera buffer di comandi che vengono eseguiti sulla GPU utilizzando il driver D3D12.

Fonte: opennet.ru

Aggiungi un commento