From 914268333dc7d93935b7827ac3b74bf610313ec9 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 23 Apr 2020 16:45:33 +0100 Subject: [PATCH] Ensure pipeline cache data actually reaches the driver --- renderdoc/driver/vulkan/vk_shader_cache.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/vk_shader_cache.cpp b/renderdoc/driver/vulkan/vk_shader_cache.cpp index bb9d95d85..bbdfe28fc 100644 --- a/renderdoc/driver/vulkan/vk_shader_cache.cpp +++ b/renderdoc/driver/vulkan/vk_shader_cache.cpp @@ -287,8 +287,26 @@ VulkanShaderCache::VulkanShaderCache(WrappedVulkan *driver) createInfo.pInitialData = m_PipeCacheBlob.data(); } - VkResult vkr = driver->vkCreatePipelineCache(m_Device, &createInfo, NULL, &m_PipelineCache); + // manually wrap the cache so the data is uploaded + + VkResult vkr = ObjDisp(m_Device)->CreatePipelineCache(Unwrap(m_Device), &createInfo, NULL, + &m_PipelineCache); RDCASSERTEQUAL(vkr, VK_SUCCESS); + + if(vkr == VK_SUCCESS) + { + ResourceId id = + m_pDriver->GetResourceManager()->WrapResource(Unwrap(m_Device), m_PipelineCache); + + if(IsCaptureMode(m_pDriver->GetState())) + { + m_pDriver->GetResourceManager()->AddResourceRecord(m_PipelineCache); + } + else + { + m_pDriver->GetResourceManager()->AddLiveResource(id, m_PipelineCache); + } + } } SetCaching(false);