Collabora-ontwikkelaars presenteerden een nieuwe Gallium-controller voor Mesa

Collabora-controller

Kort geleden Collabora-ontwikkelaars vrijgegeven via een blogpost, de nieuwe Gallium-controller voor Mesa, dat implementeert een tussenlaag om OpenCL 1.2 en OpenGL 3.3 API te organiseren over stuurprogramma's met DirectX 12 (D3D12) -ondersteuning en dat hun broncode is vrijgegeven onder de MIT-licentie.

De voorgestelde controller zal stelt u in staat Mesa op apparaten te gebruiken die aanvankelijk niet compatibel zijn met OpenCL en OpenGL en ook als uitgangspunt om OpenGL / OpenCL-applicaties te porten om op D3D12 te werken. Voor GPU-fabrikanten biedt het subsysteem ondersteuning voor OpenCL en OpenGL, met stuurprogramma's die alleen D3D12 ondersteunen.

In hun blogpost delen de ontwikkelaars:

De afgelopen maanden hebben we bij Collabora aan twee opwindende nieuwe projecten gewerkt en het is eindelijk tijd om informatie over hen met de wereld te delen ...

Van onmiddellijke plannen, wordt waargenomen het bereiken van de volledige goedkeuring van de tests van OpenCL 1.2 en OpenGL 3.3 ondersteuning, verificatie van compatibiliteit met applicaties en opname van beste praktijken in de hoofdsamenstelling van Mesa.

Over de nieuwe controller

De ontwikkeling van de nieuwe controller wordt uitgevoerd in samenwerking met technici van Microsoft om D3D11On12-tools te ontwikkelen voor D3D11-overdrachtskits en D3D12 D3D12TranslationLayer-bibliotheek, evenals standaard grafische primitieve werktuigen bovenop D3D12.

De implementatie bevat Gallium-stuurprogramma, OpenCL-compiler, de OpenCL-runtime en de NIR-naar-DXIL-shader-compiler, die de tussenliggende representatie van NIR-shaders die in Mesa worden gebruikt, omzet naar het binaire DXIL-formaat (DirectX intermediate taal), compatibel met DirectX 12 en gebaseerd op bitcode LLVM 3.7 (Microsoft's DirectX Shader Compiler is in wezen een uitgebreide vork van LLVM 3.7). De OpenCL-compiler is opgesteld op basis van de ervaring van het LLVM-project en de SPIRV-LLVM-toolkit.

Dit werk bouwt voort op veel eerdere werken. Allereerst bouwen we dit met Mesa 3D, met de Gallium-interface als basis voor de OpenGL-laag en NIR als basis voor de OpenCL-compiler. We gebruiken ook LLVM en de Khronos SPIRV-LLVM-vertaler als compiler.

Daarnaast maken we gebruik van de ervaring van Microsoft met het creëren van hun D3D12-vertaallaag, evenals van onze eigen ervaring met het ontwikkelen van Zink.

De OpenCL-broncode wordt met clang gecompileerd in de tussenliggende LLVM-pseudocode (LLVM IR), die vervolgens wordt geconverteerd naar een tussenliggende weergave van de OpenCL-kernel in het SPIR-V-formaat.

De kernen in de SPIR-V-weergave worden overgebracht naar Mesa, vertaald naar NIR-formaat, geoptimaliseerd en overgebracht naar NIR-naar-DXIL om geschikte DXIL computationele shaders te genereren voor GPU-uitvoering met behulp van op DirectX 12 gebaseerde runtime. In plaats van Clover te gebruiken in de OpenCL Mesa-implementatie, wordt een nieuwe OpenCL-runtime voorgesteld, die meer directe conversies naar de DirectX 12 API mogelijk maakt.

OpenCL- en OpenGL-stuurprogramma's worden voorbereid met behulp van de Gallium-interface geleverd in Mesa, waarmee je OpenGL-details kunt omzeilen bij het maken van stuurprogramma's en OpenGL-aanroepen kunt vertalen naar entiteiten die dichter bij de grafische primitieven staan ​​waarop moderne GPU's werken.

Het Gallium-stuurprogramma accepteert OpenGL-commando's en bouwt met de medewerking van de NIR-naar-DXIL-vertaler commandobuffers die op de GPU draaien met behulp van het D3D12-stuurprogramma.

Tenslotte ontwikkelaars vermelden dat dit vroeg werk is en dat ze verwachten dat de controller in de loop van de tijd zal verbeteren:

Dit is slechts de aankondiging en er moet nog veel werk worden verzet. We hebben op dit moment iets dat in sommige gevallen werkt, maar we beginnen net aan de oppervlakte te krabben.

Allereerst moeten we het niveau van functies bereiken waarnaar we op weg zijn. Ons doel op dit moment is om te slagen voor conformiteitstests voor OpenCL 1.2 en OpenGL 3.3. We hebben nog een lange weg te gaan, maar met een beetje hard werken en zweet weet ik zeker dat we er zullen komen.

Als u er meer over wilt weten, u kunt de originele notitie inchecken de volgende link of voor degenen die geïnteresseerd zijn in het bekijken van de broncode, kunnen ze dat doen via deze link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.