Vcc, un compilatore basato su Clang progettato per generare codice eseguibile in Vulkan

vcc

Vcc: il compilatore Vulkan Clang

Nel panorama delle API grafiche, Le lingue di ombreggiatura hanno dovuto affrontare una limitazione, perché nonostante la possibilità di scrivere codice in un sottoinsieme comune tra GLSL, HLSL e C++, sono presenti le attuali restrizioni.

Per questo è nato Vcc (Vulkan Clang Compiler) il compilatore Vulkan Clang, che è un progetto in sviluppo da 3 anni, nasce come risposta a questi limiti e sfide. Questo progetto cerca non solo di superare le restrizioni espressive, ma di eliminare il concetto stesso di linguaggi sfumati.

Incorporando l'intera famiglia linguistica C / C ++ a Vulcano, Vcc introduce funzionalità mai viste prima negli shader Vulkan, come puntatori fisici, puntatori generici, chiamate di funzioni reali e un flusso di controllo completo.

Questa iniziativa cerca di colmare il divario software tra la grafica e le API di calcolo. Rendendo Vulkan compatibile con altre API di GPU Computing, Vcc viene presentato come un passo importante verso l'unificazione della programmazione nella grafica e nell'informatica, allineandosi all'adozione di massa e alla qualità di implementazione per cui Vulkan è noto.

Informazioni su VCC

Vcc è un compilatore basato su Clang progettato per generare codice eseguibile in Vulkan, il suo obiettivo è quello di posizionarsi come un compilatore in grado di tradurre codice C++ in una rappresentazione che può essere eseguita su GPU che supportano l'API grafica Vulkan. A differenza dei modelli di programmazione GPU basati sui linguaggi shader GLSL e HLSL, Vcc prende l'idea di eliminare completamente l'uso di linguaggi shader separati e offre la possibilità di compilare direttamente codice C/C++ per Vulkan.

Sebbene potrebbe essere considerato un concorrente di GLSL e HLSL, Da allora, la vera intenzione alla base di questo progetto va oltre Vcc cerca di incorporare la famiglia di linguaggi C/C++ in Vulkan, introducendo una serie di funzionalità negli shader Vulkan.

Vcc è semplicemente un'interfaccia per Shady, un IR e un compilatore progettato per estendere SPIR-V con il supporto per i costrutti sopra menzionati. Shady viene presentato come un IR relativamente convenzionale e include il supporto per l'analisi di LLVM IR. Gestisce la riduzione e l'emulazione di tutte le funzionalità aggiuntive non presenti nelle versioni attuali di SPIR-V 3.

Naturalmente, ci sono una serie di caratteristiche uniche che si trovano solo negli shader. Questi sono esposti in Vcc utilizzando intrinseci e annotazioni, consentendo di scrivere codice che interagisce con le varie funzionalità del canale Vulkan.

Il processo di compilazione in Vcc prevede l'utilizzo dei componenti del progetto LLVM e Clang come interfaccia. Per l'esecuzione sulla GPU, Vcc sviluppa la propria rappresentazione shader intermedia "Shady", insieme a un compilatore dedicato per convertire il codice in questa rappresentazione. Questo approccio consente la compilazione di codice C/C++ standard ed è completato da specifiche funzioni integrate per sfruttare le capacità della GPU.

Vcc si distingue per il supporto di funzioni native C/C++ per controllare il flusso del programma, consentendo anche l'uso dell'istruzione "goto". Inoltre, offre la possibilità di chiamare funzioni, eseguire funzioni in modo ricorsivo e utilizzare vari tipi di puntatori, come puntatori fisici, puntatori con tag e puntatori a funzioni. Inoltre, semplifica l'esecuzione di operazioni aritmetiche sui puntatori e la determinazione dei layout dei caratteri in memoria.

La rappresentazione intermedia dello shader Shady è basata su SPIR-V 3 ed è stata ampliata per supportare costrutti speciali inerenti alle funzionalità C/C++. L'emulazione viene utilizzata per implementare funzionalità avanzate che non sono direttamente applicabili a SPIR-V. Vcc include funzioni e annotazioni integrate per consentire ai programmi di utilizzare in modo efficiente le capacità specifiche degli shader, fornendo così un ambiente versatile e potente per lo sviluppo di applicazioni GPU.

Infine, vale la pena ricordare che non tutto è roseo eÈ essenziale tenere conto di alcune limitazioni dell’implementazione. Ad esempio, Vcc non supporta le eccezioni C++ e la funzionalità malloc/free non è disponibile. Inoltre, esiste una restrizione sulla portabilità delle funzioni e dei puntatori tra il sistema host e la GPU. Queste considerazioni sono cruciali quando si pianifica lo sviluppo di applicazioni che utilizzano Vcc per garantire una distribuzione efficiente e senza problemi.

Se si interessati a saperne di più, puoi consultare il sito e per chi fosse interessato al codice, sappi che è disponibile qui.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.