anv: fix index buffer size changes

With vkCmdBindIndexBuffer2KHR only the provided size can change which
currently fails to reprogram the index buffer properly.

Signed-off-by: Lionel Landwerlin <llandwerlin@gmail.com>
Fixes: 5c2aca456e ("anv: implement vkCmdBindIndexBuffer2KHR")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12376
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
(cherry picked from commit 5e4aeb3ad7)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32852>
This commit is contained in:
Lionel Landwerlin
2024-12-26 23:42:07 +02:00
committed by Dylan Baker
parent cc58288510
commit 7bea0dd536
2 changed files with 5 additions and 3 deletions

View File

@@ -6147,14 +6147,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;
}
}