VK_IMAGE_LAYOUT_UNDEFINED против VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL в качестве начального макета для вложения Framebuffer - PullRequest
2 голосов
/ 23 мая 2019

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

Но если я знаю, что изображение прикреплено как цветная цель, не лучше ли установить его в VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, который точно сообщает водителю, каким он будет?

1 Ответ

3 голосов
/ 23 мая 2019

Исходный макет для вложения прохода рендеринга - это макет, в котором изображение находится в до запуска рендеринга.Вы не говорите «поместите это изображение в этот макет»;вы говорите "изображение уже в этом макете".Поэтому, если это изображение уже не находится в макете цветовых вложений, это не тот макет, который нужно установить в качестве исходного макета.Если вы устанавливаете макет как «неопределенный», вы в основном говорите «Мне все равно».

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

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

Это не должно быть медленнее, чем использование одного и того же макета для исходного макета и первого макета подпрохода.Пока вы очищаете изображение.

...