Vcc, un compilador basat en Clang dissenyat per generar codi executable a Vulkan

vcc

Vcc: el compilador de Vulkan Clang

Al panorama de les API de gràfics, els llenguatges d'ombrejat han enfrontat una limitació, doncs malgrat la possibilitat d'escriure codi en un subconjunt comú entre GLSL, HLSL i C++, les restriccions actuals aquestes presents.

És per això que neix Vcc (Vulkan Clang Compiler) el compilador Vulkan Clang, el qual és un projecte que va estar en desenvolupament durant 3 anys, sorgeix com una resposta a aquestes limitacions i desafiaments. Aquest projecte cerca no només superar les restriccions expressives, sinó eliminar el concepte mateix de llenguatges d'ombreig.

En incorporar la família completa de llenguatges C / C ++ a Vulkan, Vcc introdueix característiques mai abans vistes als ombrejadors de Vulkan, com a punters físics, punters genèrics, cridades a funcions reals i un complet flux de control.

aquesta iniciativa cerca tancar la bretxa de programari entre les API de gràfics i de computació. Quan Vulkan sigui compatible amb altres API de computació de GPU, Vcc es presenta com un pas important cap a la unificació de la programació en gràfics i computació, alineant-se amb l'adopció massiva i la qualitat d'implementació que caracteritzen Vulkan.

Sobre VCC

Vcc és un compilador basat en Clang dissenyat per generar codi executable a Vulkan, té com a objectiu, el posicionar-se com un compilador capaç de traduir codi C++ en una representació que es pugui executar a GPU que suportin l'API de gràfics Vulkan. A diferència dels models de programació de GPU basats en els llenguatges d'ombreig GLSL i HLSL, Vcc pren la idea d'eliminar per complet l'ús de llenguatges d'ombreig separats i brinda la capacitat de compilar directament codi C/C++ per a Vulkan.

Encara que podria considerar-se un competidor de GLSL i HLSL, la veritable intenció darrere d'aquest projecte va més enllà, doncs Vcc busca incorporar la família de llenguatges C/C++ a Vulkan, presentant una sèrie de característiques als ombrejadors de Vulkan.

Vcc és simplement una interfície per a Shady, un IR i un compilador dissenyat per ampliar SPIR-V amb suport per a les construccions abans esmentades. Shady es presenta com un IR relativament convencional i inclou suport per analitzar LLVM IR. Maneja la reducció i emulació de totes les funcions addicionals que no es troben a les versions actuals de SPIR-V 3 .

Per descomptat, hi ha una sèrie de característiques úniques que només es troben als ombrejadors. Aquests s'exposen a Vcc mitjançant intrínsecs i anotacions, cosa que permet escriure codi que interactuï amb les diverses característiques del canal Vulkan.

El procés de compilació a Vcc implica la utilització dels components del projecte LLVM i Clang com a interfície. Per a la seva execució a la GPU, Vcc desenvolupa la seva pròpia representació d'ombrejador intermèdia «Shady», juntament amb un compilador dedicat per convertir el codi a aquesta representació. Aquest enfocament permet la compilació de codi C/C++ estàndard i es complementa amb funcions integrades específiques per aprofitar les capacitats de la GPU.

Vcc destaca per admetre funcions natives de C/C++ per controlar el flux del programa, fins i tot permetent l'ús de la instrucció “goto”. Així mateix, proporciona la capacitat d'anomenar funcions, executar funcions de manera recursiva i utilitzar diversos tipus de punters, com ara punters físics, punters etiquetats i punters de funció. A més, es facilita la realització d'operacions aritmètiques a punters i la determinació de dissenys de tipus a la memòria.

La representació intermèdia d'ombrejador Shady es basa en SPIR-V 3 i s'expandeix per admetre construccions especials que són inherents a les característiques de C/C++. L'emulació es fa servir per implementar capacitats avançades que no són directament aplicables a SPIR-V. Vcc inclou funcions i anotacions integrades per permetre que els programes utilitzin de manera eficient les capacitats específiques dels ombrejadors, proporcionant així un entorn versàtil i potent per al desenvolupament d'aplicacions GPU.

Finalment, cal esmentar que no tot és color de rosa is essencial tenir en compte algunes limitacions de la implementació. Per exemple, Vcc no admet excepcions de C++ i la funcionalitat de malloc/free no està disponible. A més, hi ha una restricció en la portabilitat de funcions i punters entre el sistema host i la GPU. Aquestes consideracions són crucials en planificar el desenvolupament d'aplicacions que utilitzen Vcc per garantir una implementació eficaç i lliure de problemes.

si estàs interessat a poder conèixer més sobre això, pots consultar el lloc web i per als interessats en el codi, han de saber que està disponible ací.


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ó.