Демо Vulkan
Описание приложения
Этот пример демонстрирует, как интегрировать Vulkan в ОС Аврора, который использует Wayland и Lipstick в качестве оконной системы и композитора.
Пример основан на адаптации одного из проектов из репозитория Sascha Willems Vulkan Examples и показывает,
как реализовать полноценный цикл рендеринга на устройствах под управлением Аврора ОС.
Приложение использует расширение VK_KHR_wayland_surface
для создания Vulkan-поверхности, отображаемой напрямую на Wayland-композитор. Это позволяет выполнять высокопроизводительный рендеринг без промежуточных графических слоёв,
что особенно актуально для встраиваемых и мобильных систем.
Этапы работы:
- Подключение к Wayland-серверу
Программа устанавливает соединение с локальным Wayland-композитором, который управляет окнами и поверхностями.
Wayland обеспечивает низкоуровневое взаимодействие с экраном, управление буферами и вводом пользователя.
Документация Wayland. - Создание Wayland-поверхности После подключения создаётся wl_surface, которая служит контейнером для визуализации содержимого. На эту поверхность в дальнейшем будет привязана Vulkan swapchain, обеспечивающая обновление кадров.
- Инициализация Vulkan
Приложение инициализирует Vulkan — низкоуровневый API для рендеринга.
Здесь создаются:
- Vulkan-инстанс
- физическое и логическое устройство (GPU)
- очередь команд
- цепочка кадров (swapchain), связанная с Wayland-поверхностью
Спецификация Vulkan.
- Интеграция с Lipstick
Lipstick - это композитор, используемый в Aurora OS, основанный на Wayland.
Он отвечает за отрисовку пользовательского интерфейса и окон, а также за управление их слоями и прозрачностью.
Документация Lipstick. - Рендеринг и вывод изображения После успешной инициализации Vulkan и Wayland создаётся основной цикл рендеринга. Каждый кадр формируется в Vulkan и выводится непосредственно на экран через Wayland-композитор. Такой подход обеспечивает минимальные задержки и максимальную производительность.
Зависимости:
- Vulkan - предоставляется в виде собранной библиотеки, которая устанавливается вместе с приложением.
Содержание
- Совместимость
- Информация о ветках
- Установка и запуск
- Скриншоты
- Структура проекта
- Правила использования и участие в разработке
Совместимость
Внимание. Пример можно запустить только на физических устройствах.
Приложение корректно работает начиная с ОС Аврора 5.2 и выше.
Информация о ветках
Версии приложения соответствуют соглашению об наименовании веток.
Установка и запуск
Установка
Зависимость Vulkan поставляется как сабмодуль git. Перед сборкой примера необходимо убедиться, что он правильно был выкачан.
Запуск
На текущий момент нет корректного способа останавливать приложение запущенного через firejail. Чтобы завершить работу нужно убить процесс ru.auroraos.VulkanDemo.
Найти такой процесс можно через команду:
ps aux | grep VulkanDemo
предварительно, подключившись к устройству по ssh. Вывод:
...
4671 defaultu /usr/bin/ru.auroraos.VulkanDemo
...
Убить процесс:
devel-su kill -9 4671
Скриншоты

Структура проекта
Проект имеет структуру приложения на базе C++ и QML для ОС Аврора.
- Каталог 3rdparty содержит примеры и библиотеки на С++ Sascha Willems Vulkan Examples.
- Каталог application содержит файлы приложения для ОС Аврора.
- Каталог assets содержит дополнительные ресурсы приложения.
- Каталог cmake содержит дополнительные CMake файлы.
- Каталог data содержит данные для конфигурации приложения.
- Каталог icons содержит иконки приложения.
- Каталог shaders содержит исходные файлы шейдеров для примера.
- Каталог src содержит исходные файлы на C++ приложения.
- Файл CMakeLists.txt описывает структуру проекта для системы сборки cmake.
- Файл ru.auroraos.VulkanDemo.desktop определяет отображение и параметры запуска приложения.
- Каталог patches содержит патчи для корректной работы Vulkan примеров.
- Каталог rpm содержит настройки сборки rpm-пакета.
- Файл ru.auroraos.VulkanDemo.spec используется инструментом rpmbuild.
Правила использования и участие в разработке
Исходный код проекта предоставляется по лицензии, которая позволяет использовать его в сторонних приложениях.
Для участия в развитии проекта, пожалуйста, ознакомьтесь с соглашением участника. Если Вы планируете присылать свой исходный код для включения в состав проекта, Вам понадобится принять условия CLA.
Информация об участниках указана в файле AUTHORS.
Кодекс поведения — это действующий набор правил компании «Открытая Мобильная Платформа», который информирует об ожиданиях по взаимодействию между членами сообщества при общении и работе над проектами.