Выпущена версия Vulkan 1.3.260

Новыми расширениями в этом еженедельном обновлении спецификации Vulkan API стали VK_AMDX_shader_enqueue и VK_KHR_maintenance5.

VK_KHR_maintenance5 — это последнее обновление спецификации обслуживания Vulkan с множеством мелких функций, которые объединены в это расширение для внесения небольших дополнений. В работе над VK_KHR_maintenance5 принимали участие AMD, Intel, Imagination, Valve и другие организации.

Среди изменений в VK_KHR_maintenance5 — добавление нескольких новых форматов, устаревание шейдерных модулей, усиление гарантий распространения значений возврата, потерянных устройством, новые флаги и свойства, а также другие мелкие доработки.

VK_AMDX_shader_enqueue — это экспериментальная/провизионная спецификация, разработанная инженерами AMD, позволяющая разработчикам получать рабочие группы вычислительных шейдеров от других вычислительных шейдеров.

VK_AMDX_shader_enqueue для вызова вычислительных рабочих групп из шейдера создается для того, чтобы удовлетворить потребности современных игровых движков. В этом документе объясняется:

В приложениях все чаще используются более сложные рендереры, часто включающие в себя несколько вычислительных проходов, которые классифицируют, сортируют или иным образом обрабатывают входные данные. Эти проходы могут использоваться для определения того, как будет выполняться будущая работа на GPU, но для запуска этой будущей работы GPU необходимо либо обращаться к хосту, либо обращаться к буферной памяти и использовать косвенные команды. Обход хоста неизбежно приводит к увеличению пропускной способности системы и задержкам, поскольку буферы команд должны быть созданы и переданы обратно на GPU. Косвенные команды хорошо работают во многих случаях, но они не обладают достаточной гибкостью при определении того, что именно будет отправлено; они должны быть выписаны заранее, синхронизированы с тяжелыми барьерами API и выполняться с помощью одного заранее записанного конвейера.

Хотя задержки можно скрыть, а косвенные команды могут работать во многих случаях, когда дополнительные задержки и пропускная способность неприемлемы, последние разработки движка, такие как технология Nanite в Unreal 5, явно требуют гибкости выбора шейдеров и низких задержек. Желательное решение должно обладать гибкостью, необходимой для таких систем, и при этом сохранять цикл выполнения на GPU.

Вместо того чтобы идти по пути генерируемых устройством NVIDIA команд (DGC) или расширять функциональность косвенных команд, AMD использует этот подход к шейдерному enqueue, который является явным и производительным для современных игровых движков.

Более подробная информация об этих новых расширениях и других изменениях в Vulkan 1.3.260 доступна на GitHub.

Один мальчик подписался на телеграм-канал Игры в Linux и получил бесплатную игру в Steam! Новости из мира игр в Linux, свежие обзоры игр и полезные инструкции всегда под рукой!

Источник
Константин Дьяченко

Автор и основатель сайта Игры в Linux с 2010 года. Пользователь Linux с 2002. Старый злобный сисадмин с 1997.

Если Вам интересна тематика сайта и вы хотите каким-то образом поучаствовать в жизни сайта и его сообществ - напишите мне! Все контакты в разделе о сайте.

Игры в Linux
Добавить комментарий

Поля email и сайт не являются обязательными. Оставляя комментарий вы соглашаетесь с политикой конфиденциальности сайта.