Vulkan 1.3.293 вышел в пятницу в качестве новейшей спецификации для этого стандартного графического и вычислительного API. Помимо множества исправлений и уточнений, Vulkan 1.3.293 представляет новое расширение для NVIDIA.
Vulkan — это кроссплатформенный интерфейс прикладного программирования (API), разработанный компанией Khronos Group для оптимизации взаимодействия между центральным и графическим процессорами в приложениях, требующих интенсивных графических вычислений, например, в играх. Он призван заменить устаревший OpenGL и улучшить производительность системы за счёт повышения пропускной способности между ЦПУ и ГПУ. Vulkan обеспечивает более плавный и динамичный игровой процесс, снижает энергопотребление и тепловыделение, а также позволяет разработчикам игр создавать более насыщенные деталями и спецэффектами сцены.
Что нового в Vulkan 1.3.293
Новым в спецификации Vulkan 1.3.293 стало расширение NVIDIA VK_NV_command_buffer_inheritance. Это новое расширение позволяет игровым движкам и приложениям повторно использовать графику и состояние вычислений между командными буферами в очереди выполнения. Пирс Дэниелл (Piers Daniell) из NVIDIA работал над этим расширением вместе с Дэниелом Стори (Daniel Story) из Nintendo. Расширение VK_NV_command_buffer_inheritance объясняется следующим образом:
«Это расширение позволяет приложениям использовать графическое и вычислительное состояние, которое остается в очереди между выполнением переданных командных буферов. Это работает как с первичными, так и со вторичными командными буферами.
Унаследованное состояние включает в себя ранее связанное состояние конвейера, ранее связанные шейдерные объекты, ранее связанные вершинные и индексные буферы, ранее связанные наборы дескрипторов и константы push, а также все ранее установленное динамическое состояние.
Это расширение ослабляет требование, что все эти состояния должны быть привязаны и установлены после начала командного буфера и до следующей отрисовки или диспетчеризации.
Благодаря отсутствию необходимости устанавливать состояние, которое было унаследовано, приложения могут сэкономить циклы CPU и GPU за счет отсутствия необходимости устанавливать состояние избыточно, а также повысить гибкость при повторном использовании вторичных командных буферов.»
Интересное дополнение, и мы посмотрим, вызовет ли это расширение наследования командных буферов интерес у других производителей драйверов Vulkan.
Более подробная информация об этом обновлении спецификации Vulkan API и вся документация по VK_NV_command_buffer_inheritance доступна в этом коммите Vulkan Docs.