summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2022-08-04 13:24:25 +1000
committerDylan Baker <dylan.c.baker@intel.com>2022-08-11 10:30:37 -0700
commitdce1f58b20a17171f662e048d9c09943670e8c4b (patch)
treedc7f489faf7bea933c404e8fea51ff22e25d4d27
parentb6d9d1c9eda7fdb02b4fa41605d89378f4925ce6 (diff)
downloadmesa-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.json2
-rw-r--r--src/gallium/auxiliary/draw/draw_pt.c13
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;