panvk: fix to advance vs driver_set properly

Should only set once outside the multidraw loop so that per draw can
patch its own own desc attribs when needed.

Fixes: a5a0dd3ccc ("panvk: Implement multiDrawIndirect for v10+")
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37951>
This commit is contained in:
Yiwei Zhang 2025-10-19 20:43:20 -07:00 committed by Marge Bot
parent cd06ec1dcb
commit 800c4d3430

View file

@ -2584,6 +2584,9 @@ panvk_cmd_draw_indirect(struct panvk_cmd_buffer *cmdbuf,
if (patch_faus)
cs_move64_to(b, vs_fau_addr, cmdbuf->state.gfx.vs.push_uniforms);
if (patch_attribs != 0)
cs_move64_to(b, vs_drv_set, vs_desc_state->driver_set.dev_addr);
cs_move64_to(b, draw_params_addr, draw->indirect.buffer_dev_addr);
cs_move32_to(b, draw_id, 0);
@ -2611,8 +2614,6 @@ panvk_cmd_draw_indirect(struct panvk_cmd_buffer *cmdbuf,
}
if (patch_attribs != 0) {
cs_move64_to(b, vs_drv_set, vs_desc_state->driver_set.dev_addr);
/* If firstInstance=0, skip the offset adjustment. */
cs_if(b, MALI_CS_CONDITION_NEQUAL,
cs_sr_reg32(b, IDVS, INSTANCE_OFFSET)) {