From 5e4aeb3ad798a0ea3dee30e7942d71c49087b8ec Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 26 Dec 2024 23:42:07 +0200 Subject: [PATCH] anv: fix index buffer size changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With vkCmdBindIndexBuffer2KHR only the provided size can change which currently fails to reprogram the index buffer properly. Signed-off-by: Lionel Landwerlin Fixes: 5c2aca456e ("anv: implement vkCmdBindIndexBuffer2KHR") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12376 Reviewed-by: Tapani Pälli Part-of: --- src/intel/vulkan/genX_cmd_buffer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index c31653e1633..2f04eca4d0d 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -6169,14 +6169,16 @@ void genX(CmdBindIndexBuffer2KHR)( cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_RESTART_INDEX; } + uint32_t index_size = buffer ? vk_buffer_range(&buffer->vk, offset, size) : 0; uint32_t index_type = vk_to_intel_index_type(indexType); if (cmd_buffer->state.gfx.index_buffer != buffer || cmd_buffer->state.gfx.index_type != index_type || - cmd_buffer->state.gfx.index_offset != offset) { + cmd_buffer->state.gfx.index_offset != offset || + cmd_buffer->state.gfx.index_size != index_size) { cmd_buffer->state.gfx.index_buffer = buffer; cmd_buffer->state.gfx.index_type = vk_to_intel_index_type(indexType); cmd_buffer->state.gfx.index_offset = offset; - cmd_buffer->state.gfx.index_size = buffer ? vk_buffer_range(&buffer->vk, offset, size) : 0; + cmd_buffer->state.gfx.index_size = index_size; cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_INDEX_BUFFER; } }