Collabora yritys
Ehdotetun ohjaimen avulla voit käyttää Mesaa laitteissa, jotka eivät tue alkuperäisesti OpenCL:ää ja OpenGL:ää, ja myös lähtökohtana OpenGL/OpenCL-sovellusten siirtämiselle toimimaan D3D12:n päällä. GPU-valmistajille alijärjestelmä mahdollistaa OpenCL- ja OpenGL-tuen, jos saatavilla on vain D3D12-tuella varustettuja ajureita.
Lähisuunnitelmien joukossa on OpenCL 1.2:n ja OpenGL 3.3:n yhteensopivuustestien täydellinen läpäiseminen, yhteensopivuuden tarkistaminen sovellusten kanssa ja kehitysten sisällyttäminen Mesan pääkoostumukseen. Kehitys tehdään yhdessä Microsoftin kehittäjien kanssa
Toteutus sisältää Gallium-ajurin, OpenCL-kääntäjän, OpenCL-ajonaikaisen ja NIR-DXIL-varjostimen kääntäjän, joka muuntaa Mesassa käytettyjen NIR-varjostimien väliesityksen DXIL-binäärimuotoon (DirectX Intermediate Language), jota tukee DirectX 12 ja joka perustuu LLVM 3.7 bittikoodi (
Lähteet, joissa on OpenCL-laajennukset, käännetään käyttämällä clangia LLVM-välissä olevaksi pseudokoodiksi (LLVM IR), joka muunnetaan sitten OpenCL-ytimien väliesitykseen SPIR-V-muodossa. SPIR-V-esityksen ytimet siirretään Mesaan, käännetään NIR-muotoon, optimoidaan ja välitetään NIR-to-DXIL-muotoon laskeakseen varjostimet DXIL-muodossa, jotka soveltuvat suoritettavaksi DirectX 12 -pohjaista ajonaikaa käyttävillä GPU:illa.
Mesassa käytetyn OpenCL-toteutuksen Cloverin sijaan ehdotetaan uutta OpenCL-ajonaikaa, joka mahdollistaa suorimmat muunnokset DirectX 12 API:ksi.
OpenCL- ja OpenGL-ajurit valmistetaan Mesan Gallium-rajapinnalla, jonka avulla voit luoda ohjaimia menemättä OpenGL-spesifisiin yksityiskohtiin ja kääntää OpenGL-kutsut pohjimmiltaan lähemmäksi nykyaikaisten GPU:iden grafiikkaprimitiiviä. Gallium-ohjain, hyväksyy OpenGL-komennot ja käytettäessä NIR-DXIL-kääntäjää
luo komentopuskureita, jotka suoritetaan GPU:ssa D3D12-ohjaimen avulla.
Lähde: opennet.ru