неявная зависимость подпрохода и барьеры - PullRequest
1 голос
/ 09 мая 2020

Я должен скопировать вложение цвета в буфер. Нужен ли мне барьер памяти изображения между концом прохода рендеринга и операцией копирования, чтобы обеспечить видимость передачи? VkAttachmentDescription.finalLayout отличается от VkAttachmentReference.layout, поэтому неявная зависимость подпрохода с dstSubpass = VK_SUBPASS_EXTERNAL действительно существует.

Моя путаница возникает из описания такой неявной внешней зависимости: у нее есть dstAccessMask = 0 и dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT. Поскольку этап передачи происходит до окончания псевдостадии конвейера, означает ли это, что мне нужно указать барьер? Или неявная зависимость влияет только на операции в проходе рендеринга, поэтому мне все равно нужен барьер? В качестве побочного вопроса, что означает 0 как маска доступа источника или назначения?

Уровни валидации не сообщают о каких-либо проблемах с барьером или без него, и результат такой, как ожидалось, но я Я не уверен, что это правильно.

1 Ответ

3 голосов
/ 09 мая 2020

Да, вам нужна зависимость между _______ и _______ в Vulkan.

Неявная зависимость существует в spe c только по формальным причинам. Без него вы бы не узнали, когда происходит переход макета при использовании, например, с семафором. Но на практике неявная зависимость не работает. Его половина dst ничего не покрывает.

Значение 0 в маске доступа - «нет доступа». Например, этап VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT ничего не читает и не записывает, поэтому флаг доступа, сопровождающий его, должен быть 0.

...