From e0b4a2771fcc6290a04bbb5b6b6633a324ae816b Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 14 Jan 2022 14:34:23 +0000 Subject: [PATCH] Don't use existance of renderpass to determine graphics vs compute pipe * When using dynamic rendering there is no renderpass object even for graphics pipelines --- renderdoc/driver/vulkan/vk_info.cpp | 4 ++++ renderdoc/driver/vulkan/vk_info.h | 2 ++ renderdoc/driver/vulkan/vk_replay.cpp | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp index 62409788b..0ad28e1d0 100644 --- a/renderdoc/driver/vulkan/vk_info.cpp +++ b/renderdoc/driver/vulkan/vk_info.cpp @@ -356,6 +356,8 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan, { flags = pCreateInfo->flags; + graphicsPipe = true; + layout = GetResID(pCreateInfo->layout); renderpass = GetResID(pCreateInfo->renderPass); subpass = pCreateInfo->subpass; @@ -741,6 +743,8 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan, Vulk { flags = pCreateInfo->flags; + graphicsPipe = false; + layout = GetResID(pCreateInfo->layout); // need to figure out which states are valid to be NULL diff --git a/renderdoc/driver/vulkan/vk_info.h b/renderdoc/driver/vulkan/vk_info.h index 9fc4abf85..9fb96ea2d 100644 --- a/renderdoc/driver/vulkan/vk_info.h +++ b/renderdoc/driver/vulkan/vk_info.h @@ -252,6 +252,8 @@ struct VulkanCreationInfo void Init(VulkanResourceManager *resourceMan, VulkanCreationInfo &info, ResourceId id, const VkComputePipelineCreateInfo *pCreateInfo); + bool graphicsPipe = false; + ResourceId layout; ResourceId renderpass; uint32_t subpass; diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 5f2675575..78f3f1af5 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -4253,7 +4253,8 @@ void VulkanReplay::RefreshDerivedReplacements() { VkPipeline pipe = VK_NULL_HANDLE; - if(pipeInfo.renderpass != ResourceId()) // check if this is a graphics or compute pipeline + // check if this is a graphics or compute pipeline + if(pipeInfo.graphicsPipe) { VkGraphicsPipelineCreateInfo pipeCreateInfo; m_pDriver->GetShaderCache()->MakeGraphicsPipelineInfo(pipeCreateInfo, it->first);