Vcc, egy Clang-alapú fordító, amelyet futtatható kód generálására terveztek Vulkanban

VCC

Vcc: a Vulkan Clang fordító

A grafikus API-környezetben Az árnyékolási nyelvek korlátokkal szembesültek, mert annak ellenére, hogy a GLSL, HLSL és C++ közös részhalmazába írhatunk kódot, a jelenlegi korlátozások jelen vannak.

Ezért született meg a Vcc (Vulkan Clang Compiler) a Vulkan Clang fordító, amely egy 3 évig fejlesztés alatt álló projekt, válaszként merül fel ezekre a korlátokra és kihívásokra. Ez a projekt nemcsak a kifejező korlátok leküzdésére törekszik, hanem az árnyékoló nyelvek fogalmának kiküszöbölésére is.

Beépítésével a teljes nyelvcsalád C / C ++ Vulkannak, A Vcc a Vulkan shaderekben még soha nem látott funkciókat vezet be, mint például a fizikai mutatók, az általános mutatók, a valós függvényhívások és a teljes vezérlési folyamat.

Ez a kezdeményezés igyekszik áthidalni a grafikus és számítási API-k közötti szoftveres szakadékot. Azáltal, hogy a Vulkan kompatibilissé válik más GPU számítási API-kkal, a Vcc fontos lépést jelent a grafikus és számítástechnikai programozás egységesítése felé, összhangban a Vulkan által ismert tömeges átvételi és implementációs minőséggel.

A VCC-ről

A Vcc egy Clang alapú fordító, amelyet futtatható kód generálására terveztek Vulkan nyelven, célja, hogy magát a C++ kód lefordítására képes fordítóként helyezi el GPU-n futtatható reprezentációban amelyek támogatják a Vulkan grafikus API-t. Ellentétben a GLSL és HLSL shader nyelveken alapuló GPU programozási modellekkel, a Vcc azt az ötletet veszi alapul, hogy teljesen kiküszöböli a külön árnyékoló nyelvek használatát, és lehetőséget biztosít a C/C++ kód közvetlen fordítására a Vulkan számára.

Bár a GLSL és a HLSL versenytársának tekinthető, A projekt mögött meghúzódó valódi szándék ennél tovább megy, hiszen A Vcc arra törekszik, hogy a C/C++ nyelvcsaládot beépítse a Vulkanba, számos funkció bevezetése a Vulkan shaderekben.

A Vcc egyszerűen egy interfész a Shady-hez, egy infravörös és egy fordító, amelyet a SPIR-V kiterjesztésére terveztek a fent említett konstrukciók támogatásával. A Shady viszonylag hagyományos IR-ként jelenik meg, és támogatja az LLVM IR elemzését. Kezeli a SPIR-V 3 jelenlegi verzióiban nem található összes további funkció csökkentését és emulációját.

Természetesen számos egyedi funkció van, amelyek csak a shaderekben találhatók meg. Ezeket a Vcc-ben belső jellemzők és megjegyzések segítségével teszik közzé, lehetővé téve olyan kód írását, amely kölcsönhatásba lép a Vulkan csatorna különféle funkcióival.

A Vcc-ben a fordítási folyamat magában foglalja az LLVM és a Clang projektkomponensek használatát interfészként. A GPU-n történő végrehajtáshoz Vcc kifejleszti a saját közbenső shader-reprezentációját "Shady", egy dedikált fordítóval együtt, amely a kódot erre az ábrázolásra konvertálja. Ez a megközelítés lehetővé teszi szabványos C/C++ kódok összeállítását, és speciális beépített funkciók egészítik ki a GPU képességeinek kihasználása érdekében.

Vcc kiemelkedik a natív C/C++ funkciók támogatásával a programfolyamat vezérléséhez, még a "goto" utasítás használatát is lehetővé teszi. Ezenkívül lehetőséget biztosít függvények meghívására, függvények rekurzív végrehajtására, valamint különféle típusú mutatók, például fizikai mutatók, címkézett mutatók és függvénymutatók használatára. Ezenkívül megkönnyíti a mutatókkal végzett aritmetikai műveletek végrehajtását és a memória típuselrendezéseinek meghatározását.

A Shady shader köztes megjelenítése a SPIR-V 3-on alapul, és kibővült, hogy támogassa a C/C++ jellemzőihez tartozó speciális konstrukciókat. Az emuláció olyan fejlett képességek megvalósítására szolgál, amelyek nem közvetlenül alkalmazhatók a SPIR-V-re. A Vcc beépített funkciókat és megjegyzéseket tartalmaz, amelyek lehetővé teszik a programok számára, hogy hatékonyan használják a shaderek speciális képességeit, így sokoldalú és hatékony környezetet biztosítanak a GPU-alkalmazások fejlesztéséhez.

Végül érdemes megemlíteni, hogy nem minden rózsás ésFontos figyelembe venni a megvalósítás néhány korlátját. Például a Vcc nem támogatja a C++ kivételeket, és a malloc/free funkció nem érhető el. Ezenkívül korlátozások vannak érvényben a funkciók és mutatók hordozhatóságára vonatkozóan a gazdagép és a GPU között. Ezek a megfontolások kulcsfontosságúak a Vcc-t használó alkalmazások fejlesztésének tervezésekor a hatékony és problémamentes telepítés érdekében.

Ha szeretne többet megtudni róla, konzultálhat a telek és a kód iránt érdeklődőknek tudniuk kell, hogy elérhető itt.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.