После месячного перерыва рабочая группа Vulkan API вернулась к еженедельным обновлениям спецификации Vulkan. Вышло обновление Vulkan 1.3.240, которое привносит одно новое расширение, а также ряд уточнений и исправлений.
Vulkan 1.3.240 содержит несколько исправлений, но более примечательным обновлением спецификации на этой неделе является новое расширение: VK_EXT_pipeline_library_group_handles. Расширение VK_EXT_pipeline_library_group_handles для улучшения использования библиотек конвейера было разработано Хансом-Кристианом Арнтценом (Hans-Kristian Arntzen) из Valve, известным своей работой над VKD3D-Proton, а также инженерами из AMD, Igalia, Intel и NVIDIA.
Ключевым моментом для конечных пользователей/геймеров в новом расширении VK_EXT_pipeline_library_group_handles является то, что оно полезно для улучшения совместимости DirectX Ray-Tracing (DXR), например, VKD3D-Proton для поддержки DXR игр через Vulkan. Новое расширение также может быть полезно для реализаций трассировки лучей Vulkan в целом. В спецификации VK_EXT_pipeline_library_group_handles расширение описывается следующим образом:
При использовании библиотек конвейера в конвейерах трассировки лучей библиотека может быть связана с различными конвейерами инкрементным способом. Приложение может иметь стратегию, при которой конвейер трассировки лучей состоит из N библиотек, а затем дополняется путем создания нового конвейера с N + 1 библиотеками. Без такого расширения все групповые дескрипторы должны быть запрошены заново, поскольку групповой дескриптор привязан к конвейеру, а не к библиотеке. Это проблематично для приложений, которые стремятся разделить создание буферов записи и соединение конвейеров трассировки лучей.
Чтобы помочь в этом, данное расширение обеспечивает поддержку запроса групповых дескрипторов непосредственно из библиотек конвейера. Групповые дескрипторы, полученные из библиотеки, должны: оставаться побитово идентичными в любом sname:VkPipeline, который связан с этой библиотекой.
Благодаря этой возможности расширение также улучшает совместимость с DXR 1.1 AddToStateObject(), которая гарантирует, что возвращаемые групповые дескрипторы остаются побитово идентичными между родительскими и дочерними конвейерами. Кроме того, запрос групповых дескрипторов из объектов COLLECTION также поддерживается этим API.
Таким образом, в скором времени мы, вероятно, увидим, что VKD3D-Proton начнет опционально использовать расширение VK_EXT_pipeline_library_group_handles.
Перевод статьи.