2016-04-13 3 views
7

Для переходов ресурсов вам нужно знать «до» и «после» VkImageLayout ресурса (например, в VkImageMemoryBarrier, переданном vkCmdPipelineBarrier). Vulkan не гарантирует заказы выполнения командных буферов, если явно не указано в документации API (от this ответа). Однако vkCmdPipelineBarrier явно заявляет, что создает зависимость между командами в буфере команд до и после вызова. Таким образом, можно «знать» макет изображения в любой момент, когда он переводится в одном командном буфере.Vulkan: упорядочивание барьеров памяти изображений в нескольких командных буферах

Однако vkQueueSumbit не применяет порядок выполнения командных буферов. Если есть два командных буфера, каждый из которых с vkCmdPipelineBarrier переводит одно и то же изображение в разные макеты, есть ли зависимость между этими двумя операциями или явная синхронизация, требуемая в этой ситуации?

ответ

5

Раздел 2.2.1 говорит:

границы командного буфера, как между первичными командными буферов одного и того же или разных партий или материалов, а также между первичными и вторичными буферами команд, не вводить каких-либо ограничений, подразумеваемые заказа , Другими словами, отправка набора командных буферов (которые могут включать выполнение вспомогательных буферов команд) между любыми операциями семафора или ограждения воспроизводит записанные команды, как если бы все они были записаны в один первичный командный буфер, за исключением того, что текущее состояние сброс на каждой границе.

В разделе 6.4 говорится, что пары команд для синхронизаций включают в себя:

Первый набор команд: перед барьером трубопровода.

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

Обратите внимание, что он говорит «в одной очереди», а не «в том же командном буфере».

Оба эти утверждения дают понять, что барьеры трубопровода влияют на выполнение команд в очереди. Зависимости выполнения не ограничены командами одного командного буфера.

+0

Я не совсем спрашивал, во что я ехал, но это отвечает на то, что я спросил. – MuertoExcobito