Vcc, kompilator temeljen na Clangu dizajniran za generiranje izvršnog koda u Vulkanu

VCC

Vcc: prevodilac Vulkan Clang

U okruženju grafičkog API-ja, Jezici sjenčanja su se suočili s ograničenjima, jer unatoč mogućnosti pisanja koda u zajedničkom podskupu između GLSL-a, HLSL-a i C++-a, postoje trenutna ograničenja.

Zbog toga je Vcc rođen (Vulkan Clang Compiler) prevodilac Vulkan Clang, koji je projekt koji se razvijao 3 godine, nastaje kao odgovor na ta ograničenja i izazove. Ovaj projekt nastoji ne samo prevladati izražajna ograničenja, već i eliminirati sam koncept jezika sjenčanja.

Inkorporiranjem kompletnu jezičnu obitelj C / C ++ Vulkanu, Vcc predstavlja značajke koje nikada prije nisu viđene u Vulkan shaderima, kao što su fizički pokazivači, generički pokazivači, stvarni pozivi funkcija i potpuni tok kontrole.

Ova inicijativa nastoji premostiti softverski jaz između grafičkih i računalnih API-ja. Čineći Vulkan kompatibilnim s drugim GPU računalnim API-jima, Vcc je predstavljen kao važan korak prema objedinjavanju programiranja u grafici i računalstvu, usklađujući se s masovnim usvajanjem i kvalitetom implementacije po kojoj je Vulkan poznat.

O VCC-u

Vcc je kompajler temeljen na Clangu dizajniran za generiranje izvršnog koda u Vulkanu, njegov cilj je pozicionirati se kao kompilator sposoban prevoditi C++ kod u prikazu koji može raditi na GPU-u koji podržavaju Vulkan grafički API. Za razliku od modela GPU programiranja temeljenih na GLSL i HLSL shader jezicima, Vcc preuzima ideju potpunog uklanjanja upotrebe zasebnih shader jezika i pruža mogućnost izravnog kompiliranja C/C++ koda za Vulkan.

Iako može se smatrati konkurentom GLSL-u i HLSL-u, Prava namjera iza ovog projekta ide dalje, jer Vcc nastoji inkorporirati obitelj jezika C/C++ u Vulkan, predstavljanje brojnih značajki u Vulkan shaderima.

Vcc je jednostavno sučelje za Shady, IR i kompajler dizajniran da proširi SPIR-V s podrškom za gore spomenute konstrukcije. Shady je predstavljen kao relativno konvencionalni IR i uključuje podršku za raščlanjivanje LLVM IR-a. Rukuje smanjenjem i emulacijom svih dodatnih značajki koje se ne nalaze u trenutnim verzijama SPIR-V 3.

Naravno, postoji niz jedinstvenih značajki koje se nalaze samo u shaderima. Oni su izloženi u Vcc-u pomoću intrinsika i komentara, što vam omogućuje pisanje koda koji je u interakciji s različitim značajkama kanala Vulkan.

Proces kompilacije u Vcc-u uključuje korištenje komponenti projekta LLVM i Clang kao sučelje. Za izvođenje na GPU-u, Vcc razvija vlastiti posredni shader prikaz "Shady", zajedno s namjenskim kompajlerom za pretvaranje koda u ovaj prikaz. Ovaj pristup omogućuje kompilaciju standardnog C/C++ koda i nadopunjuje se specifičnim ugrađenim funkcijama kako bi se iskoristile mogućnosti GPU-a.

VCC ističe se podržavanjem izvornih C/C++ funkcija za kontrolu tijeka programa, čak dopuštajući korištenje instrukcije "goto". Dodatno, pruža mogućnost pozivanja funkcija, rekurzivnog izvršavanja funkcija i korištenja različitih vrsta pokazivača, kao što su fizički pokazivači, označeni pokazivači i funkcijski pokazivači. Osim toga, olakšava izvođenje aritmetičkih operacija na pokazivačima i određivanje rasporeda tipa u memoriji.

Intermedijarni prikaz Shady shadera temelji se na SPIR-V 3 i proširen je tako da podržava posebne konstrukcije koje su svojstvene C/C++ značajkama. Emulacija se koristi za implementaciju naprednih mogućnosti koje nisu izravno primjenjive na SPIR-V. Vcc uključuje ugrađene funkcije i bilješke kako bi programima omogućili učinkovito korištenje specifičnih mogućnosti shadera, čime se pruža svestrano i snažno okruženje za razvoj GPU aplikacija.

Na kraju, vrijedi napomenuti da nije sve tako ružičasto iBitno je uzeti u obzir neka ograničenja implementacije. Na primjer, Vcc ne podržava C++ iznimke, a funkcija malloc/free nije dostupna. Osim toga, postoji ograničenje prenosivosti funkcija i pokazivača između glavnog sustava i GPU-a. Ova su razmatranja ključna pri planiranju razvoja aplikacija koje koriste Vcc kako bi se osigurala učinkovita implementacija bez problema.

Naps zainteresirani za saznanje više o tome, možete konzultirati mjesto a za one koje zanima šifra, trebali biste znati da je dostupna ovdje.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.