From 70aa470bdbfbafb6a2baa8f601296eb5a544637c Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 28 May 2024 08:36:01 +0200 Subject: [PATCH] v3dv: fix incorrect index buffer size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When programming the size, we should take into account the offset from the start of the index buffer address. cc: mesa-stable Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/vulkan/v3dvx_cmd_buffer.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/broadcom/vulkan/v3dvx_cmd_buffer.c b/src/broadcom/vulkan/v3dvx_cmd_buffer.c index 1f9367dde9a..51189f4042c 100644 --- a/src/broadcom/vulkan/v3dvx_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dvx_cmd_buffer.c @@ -2740,11 +2740,12 @@ v3dX(cmd_buffer_emit_index_buffer)(struct v3dv_cmd_buffer *cmd_buffer) &job->bcl, cl_packet_length(INDEX_BUFFER_SETUP)); v3dv_return_if_oom(cmd_buffer, NULL); - const uint32_t offset = cmd_buffer->state.index_buffer.offset; + const uint32_t offset = ibuffer->mem_offset + + cmd_buffer->state.index_buffer.offset; + assert(ibuffer->mem->bo->size >= offset); cl_emit(&job->bcl, INDEX_BUFFER_SETUP, ib) { - ib.address = v3dv_cl_address(ibuffer->mem->bo, - ibuffer->mem_offset + offset); - ib.size = ibuffer->mem->bo->size; + ib.address = v3dv_cl_address(ibuffer->mem->bo, offset); + ib.size = ibuffer->mem->bo->size - offset; } }