Описание насадки Vulkan

Для вложений этапов рендеринга требуются исходный макет полей и окончательный макет, и они описаны в документации как таковые:

initialLayout - это макет, в котором будет находиться подресурс прикрепленного изображения при запуске экземпляра прохода рендеринга.

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

Означает ли это, что вложения будут автоматически перемещаться, когда мы вызываем и завершаем экземпляр прохода рендеринга, или это означает, что программист должен выполнить переход к этим макетам до и после прохода рендеринга? Спасибо


person Temp4890    schedule 03.06.2016    source источник


Ответы (1)


Обратите внимание на разницу в языке:

initialLayout - это макет, в котором будет вложенный ресурс изображения при запуске экземпляра этапа рендеринга.

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

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

Однако автоматический переход макета действительно происходит в начале этапа рендеринга от initialLayout к макету, указанному в ссылке на вложение подпрохода, который первым использует вложение. Точно так же происходит автоматический переход макета от макета, используемого последним подпроходом, к макету, назначенному finalLayout.

Я предполагаю, что те же правила, которые применяются к oldLayout барьеров изображений, применимы и к initialLayout здесь. В частности:

oldLayout должен иметь значение VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_PREINITIALIZED или текущий макет области изображения, затронутой барьером.

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

person Quinchilion    schedule 03.06.2016
comment
Что касается последнего абзаца; вы можете использовать операцию загрузки, чтобы сказать, что вы хотите отбросить или очистить вложения в начале рендеринга. - person ratchet freak; 04.06.2016
comment
Это многое проясняет. Спасибо за вашу помощь. - person Temp4890; 04.06.2016