From 0c87909bcfeb2283d4326ef8a411598872802486 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 11 Oct 2022 11:51:57 -0600 Subject: [PATCH] draw: fix base vertex bug Move the assignment of draw->start_index into the num_draws loop in draw_pt_arrays() so that it's updated for each primitive we're drawing. Previously, it was only set once to the 0th primitive's start index. This fixes incorrect gl_BaseVertex values when using vkCmdDrawMultiEXT() with more than one VkMultiDrawInfoEXT item. Signed-off-by: Brian Paul Reviewed-by: Dave Airlie Reviewed-by: Roland Scheidegger Part-of: --- src/gallium/auxiliary/draw/draw_pt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index c774759e13b..10908e2d23c 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -154,6 +154,8 @@ draw_pt_arrays(struct draw_context *draw, draw->pt.user.eltBias = 0; } + draw->start_index = draw_info[i].start; + if (count >= first) frontend->run(frontend, draw_info[i].start, count); @@ -603,7 +605,6 @@ draw_vbo(struct draw_context *draw, } draw->pt.max_index = index_limit - 1; - draw->start_index = use_draws[0].start; /* * TODO: We could use draw->pt.max_index to further narrow