Vcc, kompilator oparty na Clang, przeznaczony do generowania kodu wykonywalnego w Vulkan

ty

Vcc: kompilator Vulkan Clang

W graficznym interfejsie API Języki cieniujące napotkały ograniczenia, ponieważ pomimo możliwości pisania kodu we wspólnym podzbiorze pomiędzy GLSL, HLSL i C++, obecne ograniczenia są obecne.

Dlatego narodził się Vcc (Vulkan Clang Compiler) kompilator Vulkan Clang, będący projektem rozwijanym od 3 lat, powstaje jako odpowiedź na te ograniczenia i wyzwania. Projekt ten ma na celu nie tylko przezwyciężenie ograniczeń ekspresyjnych, ale także wyeliminowanie samej koncepcji języków cieniujących.

Poprzez włączenie całą rodzinę języków C / C ++ do Vulkana, Vcc wprowadza funkcje, których nigdy wcześniej nie widziano w shaderach Vulkan, takie jak wskaźniki fizyczne, wskaźniki ogólne, rzeczywiste wywołania funkcji i pełny przepływ sterowania.

Ta inicjatywa stara się wypełnić lukę w oprogramowaniu pomiędzy graficznymi i obliczeniowymi interfejsami API. Zapewniając kompatybilność Vulkan z innymi API do obliczeń na GPU, Vcc jest przedstawiany jako ważny krok w kierunku ujednolicenia programowania w grafice i informatyce, dostosowując się do masowego przyjęcia i jakości wdrażania, z której znany jest Vulkan.

O VCC

Vcc to kompilator oparty na Clang, przeznaczony do generowania kodu wykonywalnego w Vulkan, a jego celem jest pozycjonuje się jako kompilator zdolny do tłumaczenia kodu C++ w reprezentacji, która może działać na GPU obsługujące API graficzne Vulkan. W przeciwieństwie do modeli programowania GPU opartych na językach shaderów GLSL i HLSL, Vcc przyjmuje ideę całkowitego wyeliminowania użycia oddzielnych języków shaderów i zapewnia możliwość bezpośredniej kompilacji kodu C/C++ dla Vulkan.

Chociaż można uznać za konkurenta GLSL i HLSL, Prawdziwa intencja stojąca za tym projektem sięga dalej, ponieważ Vcc stara się włączyć rodzinę języków C/C++ do Vulkan, wprowadzenie szeregu funkcji w shaderach Vulkan.

Vcc to po prostu interfejs do Shady, IR i kompilator zaprojektowany w celu rozszerzenia SPIR-V o obsługę wyżej wymienionych konstrukcji. Shady jest przedstawiany jako stosunkowo konwencjonalny IR i obejmuje obsługę analizowania LLVM IR. Obsługuje redukcję i emulację wszystkich dodatkowych funkcji, których nie ma w obecnych wersjach SPIR-V 3.

Oczywiście istnieje wiele unikalnych funkcji, które można znaleźć tylko w shaderach. Są one ujawniane w Vcc przy użyciu elementów wewnętrznych i adnotacji, co pozwala na pisanie kodu, który wchodzi w interakcję z różnymi funkcjami kanału Vulkan.

Proces kompilacji w Vcc obejmuje wykorzystanie komponentów projektu LLVM i Clang jako interfejs. Do wykonania na GPU, Vcc rozwija własną pośrednią reprezentację shaderów „Shady”, wraz z dedykowanym kompilatorem do konwersji kodu na tę reprezentację. Podejście to pozwala na kompilację standardowego kodu C/C++ i jest uzupełnione specyficznymi wbudowanymi funkcjami pozwalającymi wykorzystać możliwości procesora graficznego.

Vcc wyróżnia się obsługą natywnych funkcji C/C++ do kontroli przepływu programu, nawet pozwalając na użycie instrukcji „goto”. Dodatkowo zapewnia możliwość wywoływania funkcji, wykonywania funkcji rekurencyjnie i używania różnych typów wskaźników, takich jak wskaźniki fizyczne, wskaźniki oznaczone i wskaźniki funkcji. Dodatkowo ułatwia wykonywanie operacji arytmetycznych na wskaźnikach i określanie układu typów w pamięci.

Pośrednia reprezentacja modułu cieniującego Shady jest oparta na SPIR-V 3 i została rozszerzona w celu obsługi specjalnych konstrukcji, które są nieodłącznie związane z funkcjami C/C++. Emulacja służy do wdrażania zaawansowanych możliwości, które nie mają bezpośredniego zastosowania w SPIR-V. Vcc zawiera wbudowane funkcje i adnotacje umożliwiające programom efektywne wykorzystanie specyficznych możliwości shaderów, zapewniając w ten sposób wszechstronne i wydajne środowisko do tworzenia aplikacji GPU.

Na koniec warto wspomnieć, że nie wszystko jest różowe iNależy koniecznie wziąć pod uwagę pewne ograniczenia wdrożenia. Na przykład Vcc nie obsługuje wyjątków C++, a funkcjonalność malloc/free nie jest dostępna. Dodatkowo istnieje ograniczenie w przenośności funkcji i wskaźników pomiędzy systemem hosta a procesorem graficznym. Te rozważania są kluczowe przy planowaniu rozwoju aplikacji korzystających z Vcc, aby zapewnić wydajne i bezproblemowe wdrożenie.

Jeżeli jesteś chcesz dowiedzieć się więcej na ten temat, możesz skonsultować się z teren a dla zainteresowanych kodem warto wiedzieć, że jest on dostępny tutaj.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.