diff --git a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp index b76ba6f54..f4b501126 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp @@ -1028,20 +1028,16 @@ bool WrappedVulkan::Serialise_vkCreateRenderPass(SerialiserType &ser, VkDevice d if(m_ReplayOptions.optimisation != ReplayOptimisationLevel::Fastest) { if(att[i].loadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) - { att[i].loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; - } + if(att[i].stencilLoadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) + att[i].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD; + if(att[i].loadOp == VK_ATTACHMENT_LOAD_OP_LOAD && att[i].initialLayout == VK_IMAGE_LAYOUT_UNDEFINED) { att[i].initialLayout = VK_IMAGE_LAYOUT_GENERAL; } - if(att[i].stencilLoadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) - { - att[i].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD; - if(att[i].initialLayout == VK_IMAGE_LAYOUT_UNDEFINED) - att[i].initialLayout = VK_IMAGE_LAYOUT_GENERAL; - } + if(att[i].stencilLoadOp == VK_ATTACHMENT_LOAD_OP_LOAD && att[i].initialLayout == VK_IMAGE_LAYOUT_UNDEFINED) { @@ -1292,6 +1288,26 @@ bool WrappedVulkan::Serialise_vkCreateRenderPass2(SerialiserType &ser, VkDevice att[i].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD; } + if(m_ReplayOptions.optimisation != ReplayOptimisationLevel::Fastest) + { + if(att[i].loadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) + att[i].loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; + if(att[i].stencilLoadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) + att[i].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD; + + if(att[i].loadOp == VK_ATTACHMENT_LOAD_OP_LOAD && + att[i].initialLayout == VK_IMAGE_LAYOUT_UNDEFINED) + { + att[i].initialLayout = VK_IMAGE_LAYOUT_GENERAL; + } + + if(att[i].stencilLoadOp == VK_ATTACHMENT_LOAD_OP_LOAD && + att[i].initialLayout == VK_IMAGE_LAYOUT_UNDEFINED) + { + att[i].initialLayout = VK_IMAGE_LAYOUT_GENERAL; + } + } + // renderpass can't start or end in presentable layout on replay SanitiseOldImageLayout(att[i].initialLayout); SanitiseNewImageLayout(att[i].finalLayout);