From 06ac6298dcd6e5a99a33c0ddc3b37ec0acfdab17 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 29 Nov 2023 12:18:06 +0000 Subject: [PATCH] Don't serialise vertex input structs if using mesh shaders --- renderdoc/driver/vulkan/vk_serialise.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 716df5bc2..1838135a1 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -3492,8 +3492,21 @@ void DoSerialise(SerialiserType &ser, VkGraphicsPipelineCreateInfo &el) hasTess |= (el.pStages[i].stage & (VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT | VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)) != 0; - SERIALISE_MEMBER_OPT(pVertexInputState); - SERIALISE_MEMBER_OPT(pInputAssemblyState); + bool hasMesh = false; + for(uint32_t i = 0; i < el.stageCount; i++) + hasMesh |= (el.pStages[i].stage & VK_SHADER_STAGE_MESH_BIT_EXT) != 0; + + // if we have mesh shaders, fixed function vertex input is ignored and may be garbage + if(hasMesh) + { + SERIALISE_MEMBER_OPT_EMPTY(pVertexInputState); + SERIALISE_MEMBER_OPT_EMPTY(pInputAssemblyState); + } + else + { + SERIALISE_MEMBER_OPT(pVertexInputState); + SERIALISE_MEMBER_OPT(pInputAssemblyState); + } // if we don't have tessellation shaders, pTessellationState is ignored and may be garbage if(hasTess)