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>
This commit is contained in:
Dave Airlie 2022-08-04 13:24:25 +10:00 committed by Marge Bot
parent f4abd32749
commit 5449e6d14c

View file

@ -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;