From 803fcc329862e58b7b1f5e438cb60b72870f173f Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 21 Sep 2013 17:41:14 +1200 Subject: [PATCH] i965: pass indirect buffer to primitive restart check Signed-off-by: Chris Forbes Reviewed-by: Kenneth Graunke Reviewed-by: Eric Anholt --- src/mesa/drivers/dri/i965/brw_draw.c | 7 ++++--- src/mesa/drivers/dri/i965/brw_draw.h | 3 ++- src/mesa/drivers/dri/i965/brw_primitive_restart.c | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 15cc6e37bd0..8a170f80aac 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -376,7 +376,8 @@ static bool brw_try_draw_prims( struct gl_context *ctx, GLuint nr_prims, const struct _mesa_index_buffer *ib, GLuint min_index, - GLuint max_index ) + GLuint max_index, + struct gl_buffer_object *indirect) { struct brw_context *brw = brw_context(ctx); bool retval = true; @@ -528,7 +529,7 @@ void brw_draw_prims( struct gl_context *ctx, return; /* Handle primitive restart if needed */ - if (brw_handle_primitive_restart(ctx, prims, nr_prims, ib)) { + if (brw_handle_primitive_restart(ctx, prims, nr_prims, ib, indirect)) { /* The draw was handled, so we can exit now */ return; } @@ -559,7 +560,7 @@ void brw_draw_prims( struct gl_context *ctx, * 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); + brw_try_draw_prims(ctx, arrays, prims, nr_prims, ib, min_index, max_index, indirect); } void brw_draw_init( struct brw_context *brw ) diff --git a/src/mesa/drivers/dri/i965/brw_draw.h b/src/mesa/drivers/dri/i965/brw_draw.h index 119d6f16f7e..9f95aab27d7 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.h +++ b/src/mesa/drivers/dri/i965/brw_draw.h @@ -52,6 +52,7 @@ GLboolean brw_handle_primitive_restart(struct gl_context *ctx, const struct _mesa_prim *prims, GLuint nr_prims, - const struct _mesa_index_buffer *ib); + const struct _mesa_index_buffer *ib, + struct gl_buffer_object *indirect); #endif diff --git a/src/mesa/drivers/dri/i965/brw_primitive_restart.c b/src/mesa/drivers/dri/i965/brw_primitive_restart.c index a1311510daf..3748e74f782 100644 --- a/src/mesa/drivers/dri/i965/brw_primitive_restart.c +++ b/src/mesa/drivers/dri/i965/brw_primitive_restart.c @@ -129,7 +129,8 @@ GLboolean brw_handle_primitive_restart(struct gl_context *ctx, const struct _mesa_prim *prims, GLuint nr_prims, - const struct _mesa_index_buffer *ib) + const struct _mesa_index_buffer *ib, + struct gl_buffer_object *indirect) { struct brw_context *brw = brw_context(ctx); @@ -169,7 +170,7 @@ brw_handle_primitive_restart(struct gl_context *ctx, /* Cut index should work for primitive restart, so use it */ brw->prim_restart.enable_cut_index = true; - brw_draw_prims(ctx, prims, nr_prims, ib, GL_FALSE, -1, -1, NULL, NULL); + brw_draw_prims(ctx, prims, nr_prims, ib, GL_FALSE, -1, -1, NULL, indirect); brw->prim_restart.enable_cut_index = false; } else { /* Not all the primitive draw modes are supported by the cut index, -- 2.30.2