From 8cd9d2fcc07a9f7a1ce06f76938fd29a22c3b58b Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 4 Aug 2022 13:24:25 +1000 Subject: [PATCH] draw: don't touch info values that aren't valid. These shouldn't be accessed, and shows up as an uninit access in valgrind with piglit rasterpos Reviewed-by: Mike Blumenkrantz Cc: mesa-stable Part-of: (cherry picked from commit 5449e6d14c872c21f1a8acb05252aef7b31a77f4) --- .pick_status.json | 2 +- src/gallium/auxiliary/draw/draw_pt.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 09f382fddcb..ff880ccd4b6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -283,7 +283,7 @@ "description": "draw: don't touch info values that aren't valid.", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index 8815765db78..ac0137c8553 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -153,7 +153,7 @@ draw_pt_arrays(struct draw_context *draw, if (count >= first) frontend->run(frontend, draw_info[i].start, count); - if (draw->pt.user.increment_draw_id) + if (num_draws > 1 && draw->pt.user.increment_draw_id) draw->pt.user.drawid++; } @@ -525,11 +525,14 @@ draw_vbo(struct draw_context *draw, num_draws = 1; } - if (info->index_size) + if (info->index_size) { assert(draw->pt.user.elts); - - draw->pt.user.min_index = use_info->index_bounds_valid ? use_info->min_index : 0; - draw->pt.user.max_index = use_info->index_bounds_valid ? use_info->max_index : ~0; + draw->pt.user.min_index = use_info->index_bounds_valid ? use_info->min_index : 0; + draw->pt.user.max_index = use_info->index_bounds_valid ? use_info->max_index : ~0; + } else { + draw->pt.user.min_index = 0; + draw->pt.user.max_index = ~0; + } draw->pt.user.eltSize = use_info->index_size ? draw->pt.user.eltSizeIB : 0; draw->pt.user.drawid = drawid_offset; draw->pt.user.increment_draw_id = use_info->increment_draw_id;