diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-05-18 11:34:44 -0700 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-05-23 19:12:34 -0700 |
commit | a01a1eb9e48196a5dde37675c51d294b31c32728 (patch) | |
tree | e9a6588ccb6541ec4e21be1a0027bb009c8ee894 /src/mesa/drivers/dri/i965/brw_draw.c | |
parent | a7011922f1d48357f18af4639fad008f6f33a984 (diff) | |
download | external_mesa3d-a01a1eb9e48196a5dde37675c51d294b31c32728.zip external_mesa3d-a01a1eb9e48196a5dde37675c51d294b31c32728.tar.gz external_mesa3d-a01a1eb9e48196a5dde37675c51d294b31c32728.tar.bz2 |
i965/draw: Stop relying on min_index == -1 for invalid index bounds
The vbo layer passes an index_bounds_valid flag that we should be using
instead. This also fixes a bug when min_index == -1 and basevertex != 0
where we were actually comparing min_index + basevertex == -1 which was
false and we were getting the wrong buffer-sizing path.
Cc: "11.1 11.2" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_draw.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index bb963f4..7901972 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -424,6 +424,7 @@ brw_try_draw_prims(struct gl_context *ctx, const struct _mesa_prim *prims, GLuint nr_prims, const struct _mesa_index_buffer *ib, + bool index_bounds_valid, GLuint min_index, GLuint max_index, struct brw_transform_feedback_object *xfb_obj, @@ -477,6 +478,7 @@ brw_try_draw_prims(struct gl_context *ctx, brw->ib.ib = ib; brw->ctx.NewDriverState |= BRW_NEW_INDICES; + brw->vb.index_bounds_valid = index_bounds_valid; brw->vb.min_index = min_index; brw->vb.max_index = max_index; brw->ctx.NewDriverState |= BRW_NEW_VERTICES; @@ -659,14 +661,15 @@ brw_draw_prims(struct gl_context *ctx, perf_debug("Scanning index buffer to compute index buffer bounds. " "Use glDrawRangeElements() to avoid this.\n"); vbo_get_minmax_indices(ctx, prims, ib, &min_index, &max_index, nr_prims); + index_bounds_valid = true; } /* Try drawing with the hardware, but don't do anything else if we can't * manage it. swrast doesn't support our featureset, so we can't fall back * to it. */ - brw_try_draw_prims(ctx, arrays, prims, nr_prims, ib, min_index, max_index, - xfb_obj, stream, indirect); + brw_try_draw_prims(ctx, arrays, prims, nr_prims, ib, index_bounds_valid, + min_index, max_index, xfb_obj, stream, indirect); } void |