diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index e74eab754c6..df73591168d 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -3727,6 +3727,7 @@ static VkResult pvr_cmd_buffer_upload_patched_desc_set( struct pvr_device *device = cmd_buffer->device; struct pvr_suballoc_bo *patched_desc_set_bo; uint32_t *src_mem_ptr, *dst_mem_ptr; + uint32_t desc_idx_offset = 0; VkResult result; assert(desc_set->layout->dynamic_buffer_count > 0); @@ -3801,7 +3802,7 @@ static VkResult pvr_cmd_buffer_upload_patched_desc_set( /* clang-format on */ const pvr_dev_addr_t addr = PVR_DEV_ADDR_OFFSET(descriptors[desc_idx].buffer_dev_addr, - dynamic_offsets[desc_idx]); + dynamic_offsets[desc_idx + desc_idx_offset]); const VkDeviceSize range = MIN2(descriptors[desc_idx].buffer_desc_range, descriptors[desc_idx].buffer_whole_range - @@ -3844,6 +3845,8 @@ static VkResult pvr_cmd_buffer_upload_patched_desc_set( PVR_DW_TO_BYTES(size_info->secondary)); } } + + desc_idx_offset += binding->descriptor_count; } *bo_out = patched_desc_set_bo;