Vcc, Clang-pohjainen kääntäjä, joka on suunniteltu luomaan suoritettavaa koodia Vulkanissa

vcc

Vcc: Vulkan Clang -kääntäjä

Grafiikkasovellusliittymän maisemassa Varjostuskielet ovat kohdanneet rajoituksen, koska huolimatta mahdollisuudesta kirjoittaa koodia yhteiseen osajoukkoon GLSL:n, HLSL:n ja C++:n välillä, nykyiset rajoitukset ovat olemassa.

Tästä syystä Vcc syntyi (Vulkan Clang Compiler) Vulkan Clang -kääntäjä, joka on projekti, jota kehitettiin 3 vuotta, syntyy vastauksena näihin rajoituksiin ja haasteisiin. Tämä projekti ei pyri ainoastaan ​​voittamaan ilmaisurajoituksia, vaan myös poistamaan varjostuskielten käsitteen.

Yhdistämällä koko kieliperhe C / C ++ Vulkanille, Vcc esittelee ominaisuuksia, joita ei ole ennen nähty Vulkan shadereissä, kuten fyysiset osoittimet, yleiset osoittimet, todelliset funktiokutsut ja täydellinen ohjausvirta.

Tämä aloite pyrkii kuromaan umpeen ohjelmistokuilun grafiikan ja laskentasovellusliittymien välillä. Tekemällä Vulkanista yhteensopivan muiden GPU-laskentasovellusliittymien kanssa, Vcc esitetään tärkeänä askeleena kohti ohjelmoinnin yhdistämistä grafiikassa ja tietojenkäsittelyssä, ja se on linjassa Vulkanin tunnetun massakäyttöönoton ja -toteutuslaadun kanssa.

Tietoja VCC:stä

Vcc on Clang-pohjainen kääntäjä, joka on suunniteltu tuottamaan suoritettavaa koodia Vulkanissa, sen tavoitteena on asettaa itsensä kääntäjäksi, joka pystyy kääntämään C++-koodin esityksessä, joka voi toimia GPU:lla jotka tukevat Vulkan-grafiikkasovellusliittymää. Toisin kuin GLSL- ja HLSL-varjostuskieliin perustuvat GPU-ohjelmointimallit, Vcc ottaa idean erillisten varjostuskielten käytön kokonaan poistamisesta ja tarjoaa mahdollisuuden kääntää suoraan C/C++-koodia Vulkanille.

Vaikka voidaan pitää GLSL:n ja HLSL:n kilpailijana, Tämän projektin todellinen tarkoitus ulottuu pidemmälle, koska Vcc pyrkii sisällyttämään C/C++-kieliperheen Vulkaniin, esittelemme useita ominaisuuksia Vulkan Shadereissa.

Vcc on yksinkertaisesti käyttöliittymä Shadyyn, IR ja kääntäjä, joka on suunniteltu laajentamaan SPIR-V:tä tukemalla edellä mainittuja rakenteita. Shady esitetään suhteellisen tavanomaisena IR:nä ja sisältää tuen LLVM IR:n jäsentämiseen. Käsittelee kaikkien lisäominaisuuksien vähentämisen ja emuloinnin, joita ei löydy SPIR-V 3:n nykyisistä versioista.

Tietenkin on olemassa useita ainutlaatuisia ominaisuuksia, joita löytyy vain varjostimista. Nämä näkyvät Vcc:ssä käyttämällä sisäisiä ominaisuuksia ja huomautuksia, jolloin voit kirjoittaa koodia, joka on vuorovaikutuksessa Vulkan-kanavan eri ominaisuuksien kanssa.

Vcc:n käännösprosessi sisältää LLVM- ja Clang-projektikomponenttien käytön käyttöliittymänä. Suoritukseen GPU:lla, Vcc kehittää oman välivarjostimen "Shady", sekä erillinen kääntäjä koodin muuntamiseksi tähän esitykseen. Tämä lähestymistapa mahdollistaa standardin C/C++-koodin kääntämisen, ja sitä täydentävät tietyt sisäänrakennetut toiminnot GPU:n ominaisuuksien hyödyntämiseksi.

Vcc erottuu edukseen alkuperäisten C/C++-toimintojen tukemisesta ohjelman kulkua ohjaamaan, jopa sallia "goto"-käskyn käytön. Lisäksi se tarjoaa mahdollisuuden kutsua toimintoja, suorittaa toimintoja rekursiivisesti ja käyttää erilaisia ​​osoittimia, kuten fyysisiä osoittimia, merkittyjä osoittimia ja toimintoosoittimia. Lisäksi se helpottaa aritmeettisten operaatioiden suorittamista osoittimille ja tyyppiasettelujen määrittämistä muistissa.

Shady Shader -väliesitys perustuu SPIR-V 3:een, ja sitä on laajennettu tukemaan erityisiä rakenteita, jotka ovat luontaisia ​​C/C++-ominaisuuksille. Emulointia käytetään sellaisten kehittyneiden ominaisuuksien toteuttamiseen, joita ei voida suoraan soveltaa SPIR-V:hen. Vcc sisältää sisäänrakennettuja toimintoja ja huomautuksia, joiden avulla ohjelmat voivat käyttää tehokkaasti varjostajien erityisominaisuuksia, mikä tarjoaa monipuolisen ja tehokkaan ympäristön GPU-sovellusten kehittämiseen.

Lopuksi on syytä mainita, että kaikki ei ole ruusuista jaOn välttämätöntä ottaa huomioon joitain täytäntöönpanon rajoituksia. Esimerkiksi Vcc ei tue C++-poikkeuksia, eikä malloc/free-toiminto ole käytettävissä. Lisäksi toimintojen ja osoittimien siirrettävyyttä isäntäjärjestelmän ja GPU:n välillä on rajoitettu. Nämä näkökohdat ovat tärkeitä suunniteltaessa Vcc:tä käyttävien sovellusten kehitystä tehokkaan ja ongelmattoman käyttöönoton varmistamiseksi.

Jos olet kiinnostunut tietämään siitä lisää, voit konsultoida Kotisivut ja koodista kiinnostuneiden kannattaa tietää, että se on saatavilla tässä.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.