Collabora kehittää lisäosan OpenCL:n ja OpenGL:n suorittamiseen DirectX:n päällä

Collabora yritys esitetty uusi Gallium-ohjain Mesalle, joka toteuttaa kerroksen OpenCL 1.2- ja OpenGL 3.3 -sovellusliittymien työn organisoimiseksi DirectX 12:ta (D3D12) tukevien ohjaimien päälle. Koodi julkaistu MIT-lisenssillä.

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 avoin työkaluja D3D11On12 pelien siirtämiseen D3D11:stä D3D12:een ja kirjastoon D3D12TranslationLayer, joka toteuttaa vakiografiikkaprimitiivit D3D12:n päälle.

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 (DirectX Shader Compiler Microsoftilta on pohjimmiltaan laajennettu LLVM 3.7). OpenCL-kääntäjä on laadittu LLVM-projektin ja työkalujen kehityksen pohjalta SPIRV-LLVM.

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.

Collabora kehittää lisäosan OpenCL:n ja OpenGL:n suorittamiseen DirectX:n päällä

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

Lisää kommentti