Empresa Col·labora
El controlador proposat us permet utilitzar Mesa en dispositius que no admeten de manera nativa OpenCL i OpenGL, i també com a punt de partida per portar aplicacions OpenGL/OpenCL per executar-les a D3D12. Per als fabricants de GPU, el subsistema permet oferir suport per a OpenCL i OpenGL, si només estan disponibles controladors amb suport D3D12.
Entre els plans immediats es troben l'assoliment de la superació total de les proves de compatibilitat d'OpenCL 1.2 i OpenGL 3.3, la comprovació de la compatibilitat amb les aplicacions i la inclusió de desenvolupaments en la composició principal de Mesa. El desenvolupament es realitza conjuntament amb els enginyers de Microsoft en desenvolupament
La implementació inclou el controlador Gallium, el compilador OpenCL, el temps d'execució d'OpenCL i el compilador d'ombres NIR-a-DXIL, que converteix la representació intermèdia dels ombrejats NIR utilitzats a Mesa al format binari DXIL (DirectX Intermediate Language), compatible amb DirectX 12 i basat en Codi de bits LLVM 3.7 (
Les fonts amb extensions OpenCL es compilen mitjançant clang en pseudocodi intermedi LLVM (LLVM IR), que després es converteix en una representació intermèdia dels nuclis OpenCL en format SPIR-V. Els nuclis de la representació SPIR-V es passen a Mesa, es tradueixen al format NIR, s'optimitzen i es passen a NIR-a-DXIL per generar ombrejats de càlcul en format DXIL, adequats per a l'execució en GPU amb temps d'execució basat en DirectX 12.
En lloc de Clover, la implementació d'OpenCL utilitzada a Mesa, es proposa un nou temps d'execució d'OpenCL, que permet conversions més directes a l'API de DirectX 12.
Els controladors OpenCL i OpenGL es preparen mitjançant la interfície Gallium proporcionada a Mesa, que us permet crear controladors sense entrar en detalls específics d'OpenGL i traduir les trucades OpenGL en essència més a prop dels gràfics primitius amb els quals operen les GPU modernes. El controlador Gallium accepta ordres OpenGL i quan s'utilitza el traductor NIR-a-DXIL
genera buffers d'ordres que s'executen a la GPU mitjançant el controlador D3D12.
Font: opennet.ru