From 965c48e250934e35180401e1730fe9ddfdab5dcf Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 3 Apr 2017 15:30:55 +0100 Subject: [PATCH] Only pretend to match replay requirements during capture. Refs #552 * When creating replay-only images via vkCreateImage we don't need to add any extra properties. Only during capture we need to add replay- needed properties, so that the same call will be used as during replay and so the same set of memory requirements. --- .../driver/vulkan/wrappers/vk_resource_funcs.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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 =