From f12642dfd4df09713117c46f84975193cf4ff815 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 13 Dec 2024 16:43:23 +0000 Subject: [PATCH] Propagate pipeline shader stage create flags --- renderdoc/driver/vulkan/vk_info.cpp | 2 ++ renderdoc/driver/vulkan/vk_info.h | 2 ++ renderdoc/driver/vulkan/vk_shader_cache.cpp | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp index 11f37487f3..feea885599 100644 --- a/renderdoc/driver/vulkan/vk_info.cpp +++ b/renderdoc/driver/vulkan/vk_info.cpp @@ -1158,6 +1158,7 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan, shad.module = shadid; shad.entryPoint = pCreateInfo->pStages[i].pName; shad.stage = ShaderStage(stageIndex); + shad.flags = pCreateInfo->pStages[i].flags; ShaderModuleReflectionKey key(shad.stage, shad.entryPoint, ResourceId()); @@ -1784,6 +1785,7 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan, Vulk shad.module = shadid; shad.entryPoint = pCreateInfo->stage.pName; shad.stage = ShaderStage::Compute; + shad.flags = pCreateInfo->stage.flags; ShaderModuleReflectionKey key(ShaderStage::Compute, shad.entryPoint, ResourceId()); diff --git a/renderdoc/driver/vulkan/vk_info.h b/renderdoc/driver/vulkan/vk_info.h index 84664bb24c..5ca62577d8 100644 --- a/renderdoc/driver/vulkan/vk_info.h +++ b/renderdoc/driver/vulkan/vk_info.h @@ -240,6 +240,8 @@ struct VulkanCreationInfo ShaderReflection *refl = NULL; SPIRVPatchData *patchData = NULL; + VkPipelineShaderStageCreateFlags flags; + rdcarray specialization; // VkPipelineShaderStageRequiredSubgroupSizeCreateInfo diff --git a/renderdoc/driver/vulkan/vk_shader_cache.cpp b/renderdoc/driver/vulkan/vk_shader_cache.cpp index bcc06e0d22..7c77206933 100644 --- a/renderdoc/driver/vulkan/vk_shader_cache.cpp +++ b/renderdoc/driver/vulkan/vk_shader_cache.cpp @@ -608,6 +608,7 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p stages[stageCount].pName = pipeInfo.shaders[i].entryPoint.c_str(); stages[stageCount].pNext = NULL; stages[stageCount].pSpecializationInfo = NULL; + stages[stageCount].flags = pipeInfo.shaders[i].flags; if(pipeInfo.shaders[i].requiredSubgroupSize != 0) { @@ -1081,7 +1082,7 @@ void VulkanShaderCache::MakeComputePipelineInfo(VkComputePipelineCreateInfo &pip stage.pName = pipeInfo.shaders[i].entryPoint.c_str(); stage.pNext = NULL; stage.pSpecializationInfo = NULL; - stage.flags = 0; + stage.flags = pipeInfo.shaders[i].flags; uint32_t dataOffset = 0;