diff options
author | Dave Airlie <airlied@redhat.com> | 2022-08-04 13:24:25 +1000 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2022-08-11 10:30:37 -0700 |
commit | dce1f58b20a17171f662e048d9c09943670e8c4b (patch) | |
tree | dc7f489faf7bea933c404e8fea51ff22e25d4d27 | |
parent | b6d9d1c9eda7fdb02b4fa41605d89378f4925ce6 (diff) | |
download | mesa-dce1f58b20a17171f662e048d9c09943670e8c4b.tar.gz |
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 <michael.blumenkrantz@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10641>
(cherry picked from commit 5449e6d14c872c21f1a8acb05252aef7b31a77f4)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | 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 1a646c503b1..c5a2377a83c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1984,7 +1984,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 f1821878ba6..8a25b6ea1b4 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -154,7 +154,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++; } @@ -524,11 +524,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; |