Desenvolupadors de Collabora van presentar un nou controlador Gallium per Taula

Col·labora controller

recentment els desenvolupadors de Collabora van donar a conèixer mitjançant una publicació al seu bloc, el nou controlador Gallium per Taula, que implementa una capa intermèdia per organitzar l'API OpenCL 1.2 i OpenGL 3.3 sobre els controladors amb suport DirectX 12 (D3D12) i que el seu codi font es publica sota la llicència MIT.

El controlador proposat li permet usar Taula en dispositius que inicialment no són compatibles amb OpenCL i OpenGL i també com una posició inicial per portar aplicacions OpenGL / OpenCL per treballar sobre D3D12. Per als fabricants de GPU, el subsistema permet proporcionar suport per OpenCL i OpenGL, amb controladors només amb suport per D3D12.

En la publicació del seu bloc, els desenvolupadors comparteixen:

Durant els últims mesos, hem estat treballant en dos projectes nous i emocionants en Collabora, i finalment és hora de compartir informació sobre ells amb el món ...

Dels plans immediats, S'observa l'assoliment de l'aprovació completa de les proves de compatibilitat amb OpenCL 1.2 i OpenGL 3.3, La verificació de la compatibilitat amb les aplicacions i la inclusió de les millors pràctiques en la composició principal de Taula.

Sobre el nou controlador

El desenvolupament de el nou controlador es porta a terme en conjunt amb els enginyers de Microsoft per desenvolupar eines D3D11On12 als jocs de transferència a D3D11 i biblioteca D3D12 D3D12TranslationLayer, així com també implements primitius gràfics estàndard a la part superior D3D12.

la implementació inclou el controlador Gallium, el compilador OpenCL, El temps d'execució d'OpenCL i el compilador de ombrejadors NIR-a-DXIL, que converteix la representació intermèdia de ombrejadors NIR utilitzats en Mesa a el format DXIL binari (llenguatge intermedi DirectX), compatible amb DirectX 12 i basat en el codi de bits LLVM 3.7 (DirectX Shader Compiler de Microsoft és essencialment una bifurcació estesa de LLVM 3.7). El compilador OpenCL va ser preparat sobre la base de l'experiència d'el projecte LLVM i el conjunt d'eines SPIRV-LLVM.

Aquest treball es basa en molts treballs anteriors. En primer lloc, estem construint això usant Taula 3D, amb la interfície Gallium com a base per a la capa OpenGL i NIR com a base per al compilador OpenCL. També estem utilitzant LLVM i el traductor SPIRV-LLVM de Khronos com a compilador.

A més, estem aprofitant l'experiència de Microsoft en la creació de la seva capa de traducció D3D12, així com la nostra pròpia experiència en el desenvolupament de Zink.

El codi font d'OpenCL es compila amb Clang en el pseudocodi LLVM intermedi (LLVM IR), que després es converteix en una representació intermèdia de l'nucli OpenCL en el format SPIR-V.

Els nuclis en la representació SPIR-V es transfereixen a Taula, es tradueixen a el format NIR, s'optimitzen i es transfereixen a NIR-a-DXIL per generar ombrejadors computacionals en format DXIL adequats per a l'execució en GPU utilitzant temps d'execució basat en DirectX 12. En lloc d'utilitzar Clover en Implementació Taula d'OpenCL, es proposa un nou temps d'execució OpenCL, que permet conversions més directes a l'API DirectX 12.

Els controladors OpenCL i OpenGL es preparen utilitzant la interfície Gallium proveïda en Mesa, que li permet no entrar en detalls específics d'OpenGL a l'crear controladors i traduir les trucades OpenGL en entitats que estan més a prop de les primitives gràfiques en què operen les GPU modernes.

El controlador Gallium accepta ordres OpenGL i amb la participació de l'traductor NIR-a-DXIL, forma buffers de comandes que s'executen a la GPU utilitzant el controlador D3D12.

Finalment, els desenvolupadors esmenten que aquest és un treball inicial i que esperen que el controlador millori acord amb el temps:

Aquest és només l'anunci, i queda molta feina per fer. Tenim una cosa que funciona en alguns casos en aquest moment, però tot just estem començant a esgarrapar la superfície.

En primer lloc, ens cal arribar a el nivell de característiques a què ens dirigim. Els nostres objectius en aquest moment és passar les proves de conformitat per OpenCL 1.2 i OpenGL 3.3. Tenim un llarg camí per recórrer, però amb una mica de treball dur i suor, estic segur que arribarem allà.

Si estàs interessat en conèixer més a l'respecte, pots consultar la nota original en el següent enllaç o per als que estiguin interessats en revisar el codi font poden fer-ho des d'aquest enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.