Collabora izstrādā papildinājumu OpenCL un OpenGL darbināšanai papildus DirectX

Uzņēmums Collabora uzrādīts jauns Mesa Gallium draiveris, kas ievieš slāni OpenCL 1.2 un OpenGL 3.3 API darba organizēšanai papildus draiveriem, kas atbalsta DirectX 12 (D3D12). Kods publicēta saskaņā ar MIT licenci.

Piedāvātais draiveris ļauj izmantot Mesa ierīcēs, kas sākotnēji neatbalsta OpenCL un OpenGL, kā arī kā sākumpunktu OpenGL/OpenCL lietojumprogrammu pārnešanai, lai tās darbotos uz D3D12. GPU ražotājiem apakšsistēma ļauj nodrošināt atbalstu OpenCL un OpenGL, ja ir pieejami tikai draiveri ar D3D12 atbalstu.

Starp tuvākajiem plāniem ir OpenCL 1.2 un OpenGL 3.3 saderības testu pilnīga nokārtošana, saderības ar lietojumprogrammām pārbaude un izstrādņu iekļaušana Mesa galvenajā sastāvā. Izstrāde tiek veikta kopā ar Microsoft inženieriem, kas izstrādā atvērts instrumenti D3D11On12 spēļu pārsūtīšanai no D3D11 uz D3D12 un bibliotēku D3D12TranslationLayer, kas ievieš standarta grafiskās primitīvas virs D3D12.

Īstenošana ietver Gallium draiveri, OpenCL kompilatoru, OpenCL izpildlaiku un NIR-DXIL ēnotāju kompilatoru, kas pārvērš Mesa izmantoto NIR ēnotāju starpposma attēlojumu DXIL (DirectX Intermediate Language) binārajā formātā, ko atbalsta DirectX 12 un balstās uz LLVM 3.7 bitkods (DirectX Shader Compiler no Microsoft būtībā ir LLVM 3.7 paplašināta daļa). OpenCL kompilators ir sagatavots, pamatojoties uz LLVM projekta un rīku izstrādnēm SPIRV-LLVM.

Avoti ar OpenCL paplašinājumiem tiek apkopoti, izmantojot clang LLVM starpposma pseidokodā (LLVM IR), kas pēc tam tiek pārveidots par OpenCL kodolu starpposma attēlojumu SPIR-V formātā. SPIR-V attēlojuma kodoli tiek nodoti Mesa, pārtulkoti NIR formātā, optimizēti un nodoti NIR-to-DXIL, lai ģenerētu ēnotājus DXIL formātā, kas ir piemēroti izpildei GPU, izmantojot DirectX 12 izpildlaiku.
Programmā Mesa izmantotās OpenCL ieviešanas Clover vietā tiek piedāvāts jauns OpenCL izpildlaiks, kas ļauj tiešāk konvertēt uz DirectX 12 API.

Collabora izstrādā papildinājumu OpenCL un OpenGL darbināšanai papildus DirectX

OpenCL un OpenGL draiveri tiek sagatavoti, izmantojot Mesa nodrošināto Gallium saskarni, kas ļauj izveidot draiverus, neiedziļinoties OpenGL specifiskās detaļās, un tulkot OpenGL izsaukumus pēc būtības tuvāk grafikas primitīviem, ar kuriem darbojas mūsdienu GPU. Gallium draiveris, pieņem OpenGL komandas un, izmantojot NIR-DXIL tulkotāju
ģenerē komandu buferus, kas tiek izpildīti GPU, izmantojot D3D12 draiveri.

Avots: opennet.ru

Pievieno komentāru