diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index 5ce1eb85e55..5c536df7254 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -502,9 +502,9 @@ draw_vbo(struct draw_context *draw, count = draws[0].count; - draw->pt.user.eltBias = info->index_bias; - draw->pt.user.min_index = info->min_index; - draw->pt.user.max_index = info->max_index; + draw->pt.user.eltBias = info->index_size ? info->index_bias : 0; + draw->pt.user.min_index = info->index_bounds_valid ? info->min_index : 0; + draw->pt.user.max_index = info->index_bounds_valid ? info->max_index : ~0; draw->pt.user.eltSize = info->index_size ? draw->pt.user.eltSizeIB : 0; draw->pt.user.drawid = info->drawid; diff --git a/src/gallium/auxiliary/indices/u_primconvert.c b/src/gallium/auxiliary/indices/u_primconvert.c index e7e4b4228cd..e270ec495c9 100644 --- a/src/gallium/auxiliary/indices/u_primconvert.c +++ b/src/gallium/auxiliary/indices/u_primconvert.c @@ -113,7 +113,7 @@ util_primconvert_draw_vbo(struct primconvert_context *pc, new_info.index_bounds_valid = info->index_bounds_valid; new_info.min_index = info->min_index; new_info.max_index = info->max_index; - new_info.index_bias = info->index_bias; + new_info.index_bias = info->index_size ? info->index_bias : 0; new_info.start_instance = info->start_instance; new_info.instance_count = info->instance_count; new_info.primitive_restart = info->primitive_restart; diff --git a/src/gallium/auxiliary/util/u_vbuf.c b/src/gallium/auxiliary/util/u_vbuf.c index d5b40dd0d15..4120948f401 100644 --- a/src/gallium/auxiliary/util/u_vbuf.c +++ b/src/gallium/auxiliary/util/u_vbuf.c @@ -1534,6 +1534,7 @@ void u_vbuf_draw_vbo(struct u_vbuf *mgr, const struct pipe_draw_info *info, if (unroll_indices) { new_info.index_size = 0; new_info.index_bias = 0; + new_info.index_bounds_valid = true; new_info.min_index = 0; new_info.max_index = new_draw.count - 1; new_draw.start = 0;