diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index e4973133b..eeb1bd088 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -1186,7 +1186,10 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * // TEMP HACK: Until we define a portable fake hardware, need to match the requirements for usage // on replay, so that the memory requirements are the same - createInfo_adjusted.usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + if(m_State >= WRITING) + { + createInfo_adjusted.usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + } if(createInfo_adjusted.samples != VK_SAMPLE_COUNT_1_BIT) { @@ -1194,10 +1197,13 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * createInfo_adjusted.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; // TEMP HACK: matching replay requirements - if(!IsDepthOrStencilFormat(createInfo_adjusted.format)) - createInfo_adjusted.usage |= VK_IMAGE_USAGE_STORAGE_BIT; - else - createInfo_adjusted.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + if(m_State >= WRITING) + { + if(!IsDepthOrStencilFormat(createInfo_adjusted.format)) + createInfo_adjusted.usage |= VK_IMAGE_USAGE_STORAGE_BIT; + else + createInfo_adjusted.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + } } VkResult ret =