Vcc, компілятор на основі Clang, призначений для створення виконуваного коду у Vulkan

vcc

Vcc: компілятор Vulkan Clang

У ландшафті графічного API, Мови затінення зіткнулися з обмеженнями, тому що, незважаючи на можливість написання коду в загальній підмножині між GLSL, HLSL і C++, наявні поточні обмеження.

Ось чому народився Vcc (Vulkan Clang Compiler) компілятор Vulkan Clang, який є проектом, який розроблявся протягом 3 років, виникає як відповідь на ці обмеження та виклики. Цей проект має на меті не лише подолати обмеження виразності, але й усунути саму концепцію мов затінення.

Шляхом інкорпорації повна мовна сім'я C / C ++ Вулкану, Vcc представляє функції, яких раніше не було в шейдерах Vulkan, такі як фізичні покажчики, загальні покажчики, реальні виклики функцій і повний потік керування.

Ця ініціатива прагне подолати розрив програмного забезпечення між графічними та обчислювальними API. Роблячи Vulkan сумісним з іншими обчислювальними API GPU, Vcc представляється як важливий крок до уніфікації програмування в графіці та обчисленнях, узгоджуючи його з масовим впровадженням і якістю реалізації, якою відомий Vulkan.

Про VCC

Vcc — це компілятор на основі Clang, призначений для створення виконуваного коду у Vulkan, його мета — позиціонує себе як компілятор, здатний перекладати код C++ у представленні, яке може працювати на GPU які підтримують графічний API Vulkan. На відміну від моделей програмування GPU, заснованих на мовах шейдерів GLSL і HLSL, Vcc використовує ідею повного виключення використання окремих мов шейдерів і надає можливість безпосередньо компілювати код C/C++ для Vulkan.

Хоча можна вважати конкурентом GLSL і HLSL, Справжній намір цього проекту йде далі, оскільки Vcc прагне включити сімейство мов C/C++ у Vulkan, представлено низку функцій у шейдерах Vulkan.

Vcc — це просто інтерфейс до Shady, IR і компілятор, призначений для розширення SPIR-V за допомогою підтримки вищезгаданих конструкцій. Shady представлений як відносно звичайний IR і включає підтримку аналізу LLVM IR. Забезпечує зменшення та емуляцію всіх додаткових функцій, яких немає в поточних версіях SPIR-V 3.

Звичайно, є ряд унікальних функцій, які є лише в шейдерах. Вони представлені у Vcc за допомогою внутрішніх компонентів і анотацій, що дозволяє писати код, який взаємодіє з різними функціями каналу Vulkan.

Процес компіляції у Vcc передбачає використання компонентів проекту LLVM і Clang як інтерфейс. Для виконання на GPU, Vcc розробляє власне проміжне представлення шейдерів "Shady", разом із виділеним компілятором для перетворення коду в це представлення. Цей підхід дозволяє компілювати стандартний код C/C++ і доповнюється спеціальними вбудованими функціями для використання можливостей GPU.

VDC виділяється підтримкою власних функцій C/C++ для керування потоком програми, навіть дозволяє використання інструкції "goto". Крім того, він надає можливість викликати функції, рекурсивно виконувати функції та використовувати різні типи покажчиків, таких як фізичні покажчики, покажчики з тегами та покажчики на функції. Крім того, це полегшує виконання арифметичних операцій над покажчиками та визначення макетів типів у пам’яті.

Проміжне представлення шейдера Shady базується на SPIR-V 3 і розширено для підтримки спеціальних конструкцій, властивих функціям C/C++. Емуляція використовується для реалізації розширених можливостей, які безпосередньо не застосовуються до SPIR-V. Vcc містить вбудовані функції та анотації, які дозволяють програмам ефективно використовувати специфічні можливості шейдерів, таким чином забезпечуючи універсальне та потужне середовище для розробки додатків GPU.

Насамкінець варто сказати, що не все так райдужноВажливо враховувати деякі обмеження реалізації. Наприклад, Vcc не підтримує винятки C++, а функція malloc/free недоступна. Крім того, існує обмеження щодо переносимості функцій і покажчиків між головною системою та графічним процесором. Ці міркування є вирішальними при плануванні розробки програм, які використовують Vcc, щоб забезпечити ефективне та безпроблемне розгортання.

Якщо ви є зацікавлений дізнатися більше про це, ви можете проконсультуватися з сайт і для тих, хто цікавиться кодом, ви повинні знати, що він доступний тут.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.