From 70a487adfb42e3f9ed3b182a37133aed991fcf63 Mon Sep 17 00:00:00 2001 From: Zeyang Lyu Date: Mon, 9 Mar 2026 17:13:20 +0800 Subject: [PATCH] radv: Fix incorrect misaligned_mask_invalid for VK_EXT_vertex_input_dynamic_state The cmd_buffer->vertex_bindings was not cleared when resetting the command buffer. The previous misaligned_mask_invalid bits were not preserved when calling radv_CmdBindVertexBuffers2 multiple times. Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 79bd932be6a..bc743563570 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -1287,6 +1287,7 @@ radv_reset_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer, UNUSED VkCommandB cmd_buffer->gang.sem.emitted_leader_value = 0; cmd_buffer->gang.sem.va = 0; cmd_buffer->shader_upload_seq = 0; + memset(cmd_buffer->vertex_bindings, 0, sizeof(cmd_buffer->vertex_bindings)); if (cmd_buffer->upload.upload_bo) radv_cs_add_buffer(device->ws, cs->b, cmd_buffer->upload.upload_bo); @@ -7937,8 +7938,8 @@ radv_CmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding, } } - if (misaligned_mask_invalid != d->vertex_input.vbo_misaligned_mask_invalid) { - d->vertex_input.vbo_misaligned_mask_invalid = misaligned_mask_invalid; + if (misaligned_mask_invalid & ~d->vertex_input.vbo_misaligned_mask_invalid) { + d->vertex_input.vbo_misaligned_mask_invalid |= misaligned_mask_invalid; d->vertex_input.vbo_misaligned_mask &= ~misaligned_mask_invalid; d->vertex_input.vbo_unaligned_mask &= ~misaligned_mask_invalid; cmd_buffer->state.dirty |= RADV_CMD_DIRTY_VS_PROLOG_STATE;