From c81a522360820e89c5cfdf1a364d473a62d21e44 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 7 Jun 2022 12:19:50 +0100 Subject: [PATCH] Fix entry-point remapping when editing compute shaders on vulkan --- renderdoc/driver/vulkan/vk_replay.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 9f446c8c7..d2db61596 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -4473,6 +4473,32 @@ void VulkanReplay::RefreshDerivedReplacements() ResourceId shadOrigId = rm->GetOriginalID(pipeInfo.shaders[5].module); sh.module = rm->GetLiveHandle(shadOrigId); + rdcarray entries; + + if(rm->HasReplacement(shadOrigId)) + { + entries = m_pDriver->m_CreationInfo.m_ShaderModule[GetResID(sh.module)].spirv.EntryPoints(); + if(entries.size() > 1) + { + if(entries.contains({sh.pName, ShaderStage(StageIndex(sh.stage))})) + { + // nothing to do! + } + else + { + RDCWARN( + "Multiple entry points in edited shader, none matching original, using first " + "one '%s'", + entries[0].name.c_str()); + sh.pName = entries[0].name.c_str(); + } + } + else + { + sh.pName = entries[0].name.c_str(); + } + } + // if we have pipeline executable properties, capture the data if(m_pDriver->GetExtensions(NULL).ext_KHR_pipeline_executable_properties) {