diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 2bfd264b295..5f15cd14c59 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -219,6 +219,10 @@ radv_pipeline_stage_init(VkPipelineCreateFlags2 pipeline_flags, const VkPipeline out_stage->spirv.size = minfo->codeSize; } + const VkShaderDescriptorSetAndBindingMappingInfoEXT *mapping = + vk_find_struct_const(sinfo->pNext, SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT); + out_stage->layout.mapping = mapping; + radv_shader_layout_init(pipeline_layout, out_stage->stage, &out_stage->layout); vk_pipeline_hash_shader_stage(pipeline_flags, sinfo, NULL, out_stage->shader_blake3); diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 3ee63540a6c..f2f7e3f9284 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -263,6 +263,8 @@ struct radv_shader_layout { bool use_dynamic_descriptors; bool independent_sets; + + const VkShaderDescriptorSetAndBindingMappingInfoEXT *mapping; }; struct radv_shader_stage { diff --git a/src/amd/vulkan/radv_shader_object.c b/src/amd/vulkan/radv_shader_object.c index 1ef329ea27a..198e47872cc 100644 --- a/src/amd/vulkan/radv_shader_object.c +++ b/src/amd/vulkan/radv_shader_object.c @@ -96,6 +96,10 @@ radv_shader_stage_init(const VkShaderCreateInfoEXT *sinfo, struct radv_shader_st radv_get_shader_layout(sinfo, &out_stage->layout); + const VkShaderDescriptorSetAndBindingMappingInfoEXT *mapping = + vk_find_struct_const(sinfo->pNext, SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT); + out_stage->layout.mapping = mapping; + const VkShaderRequiredSubgroupSizeCreateInfoEXT *const subgroup_size = vk_find_struct_const(sinfo->pNext, SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT);