Сообщение об ошибке довольно простое.
Сначала вы используете изображение как VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
в буфере команд. Мы можем увидеть и проверить, что:
command_buffer.transitionImageLayout( framebuffer_image, ImageLayout::COLOR_ATTACHMENT_OPTIMAL // etc
Ошибка информирует вас, что изображение вместо VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
. Как это произошло, зависит от остальной части вашего кода. Вы, должно быть, перевели изображение в этот макет раньше (случайно). Это будет либо через какой-то предыдущий vkCmdPipelineBarrier
, либо через renderpass finalLayout
.
(или менее вероятно, что есть ошибка в слоях проверки. В этом случае сообщите об этом KhronosGroup / Vulkan-ValidationLayers .)