i965: pass indirect buffer to primitive restart check

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Chris Forbes 2013-09-21 17:41:14 +12:00
parent 02f9757ab5
commit 803fcc3298
3 changed files with 9 additions and 6 deletions

View file

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

View file

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

View file

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