From fa56edcbac4d477d1b517fe35676ebb5c27144a5 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 offsets and strides of attributes were not checked if calling radv_CmdSetVertexInputEXT before radv_CmdBindVertexBuffers2. The previous misaligned_mask_invalid bits were not preserved when calling radv_CmdBindVertexBuffers2 multiple times. --- src/amd/vulkan/radv_cmd_buffer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 9a4708ab1df..1c732346270 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -7894,7 +7894,7 @@ 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; + 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; @@ -9274,6 +9274,9 @@ radv_CmdSetVertexInputEXT(VkCommandBuffer commandBuffer, uint32_t vertexBindingD if ((stride | addr) & component_align_req_minus_1) vertex_input.vbo_unaligned_mask |= BITFIELD_BIT(loc); } + else{ + vertex_input.vbo_misaligned_mask_invalid |= BITFIELD_BIT(loc); + } } radv_cmd_set_vertex_input(cmd_buffer, &vertex_input);