From: Eric Anholt Date: Thu, 4 Sep 2014 23:05:00 +0000 (-0700) Subject: mesa: Drop the always-software-primitive-restart paths. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2b76ee903187e22c9fa013579004bc5f51c9a6d8;p=mesa.git mesa: Drop the always-software-primitive-restart paths. The core sw primitive restart code is still around, because i965 uses it in some cases, but there are no drivers that want it on all the time. Reviewed-by: Rob Clark --- diff --git a/src/mesa/drivers/dri/i965/brw_primitive_restart.c b/src/mesa/drivers/dri/i965/brw_primitive_restart.c index 2d654f67b9b..f7764e15e2c 100644 --- a/src/mesa/drivers/dri/i965/brw_primitive_restart.c +++ b/src/mesa/drivers/dri/i965/brw_primitive_restart.c @@ -138,14 +138,6 @@ brw_handle_primitive_restart(struct gl_context *ctx, return GL_FALSE; } - /* If the driver has requested software handling of primitive restarts, - * then the VBO module has already taken care of things, and we can - * just draw as normal. - */ - if (ctx->Const.PrimitiveRestartInSoftware) { - return GL_FALSE; - } - /* If we have set the in_progress flag, then we are in the middle * of handling the primitive restart draw. */ diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 9cca39e5060..b7e87284e30 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -682,9 +682,6 @@ _mesa_init_constants(struct gl_constants *consts, gl_api api) /* GL_ARB_robustness */ consts->ResetStrategy = GL_NO_RESET_NOTIFICATION_ARB; - /* PrimitiveRestart */ - consts->PrimitiveRestartInSoftware = GL_FALSE; - /* ES 3.0 or ARB_ES3_compatibility */ consts->MaxElementIndex = 0xffffffffu; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 7c237bd1ba9..b66b1a85def 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -3551,11 +3551,6 @@ struct gl_constants */ GLboolean GLSLSkipStrictMaxUniformLimitCheck; - /** - * Force software support for primitive restart in the VBO module. - */ - GLboolean PrimitiveRestartInSoftware; - /** * Always use the GetTransformFeedbackVertexCount() driver hook, rather * than passing the transform feedback object to the drawing function. diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 111321bd7f2..045dbb5063d 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -562,38 +562,6 @@ vbo_bind_arrays(struct gl_context *ctx) } } - -/** - * Handle a draw case that potentially has primitive restart enabled. - * - * If primitive restart is enabled, and PrimitiveRestartInSoftware is - * set, then vbo_sw_primitive_restart is used to handle the primitive - * restart case in software. - */ -static void -vbo_handle_primitive_restart(struct gl_context *ctx, - const struct _mesa_prim *prim, - GLuint nr_prims, - const struct _mesa_index_buffer *ib, - GLboolean index_bounds_valid, - GLuint min_index, - GLuint max_index) -{ - struct vbo_context *vbo = vbo_context(ctx); - - if (ctx->Const.PrimitiveRestartInSoftware && - ctx->Array._PrimitiveRestart && - (ib != NULL)) { - /* Handle primitive restart in software */ - vbo_sw_primitive_restart(ctx, prim, nr_prims, ib, NULL); - } else { - /* Call driver directly for draw_prims */ - vbo->draw_prims(ctx, prim, nr_prims, ib, - index_bounds_valid, min_index, max_index, NULL, NULL); - } -} - - /** * Helper function called by the other DrawArrays() functions below. * This is where we handle primitive restart for drawing non-indexed @@ -1011,8 +979,8 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode, */ check_buffers_are_unmapped(exec->array.inputs); - vbo_handle_primitive_restart(ctx, prim, 1, &ib, - index_bounds_valid, start, end); + vbo->draw_prims(ctx, prim, 1, &ib, + index_bounds_valid, start, end, NULL, NULL); if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) { _mesa_flush(ctx); @@ -1372,8 +1340,8 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode, } check_buffers_are_unmapped(exec->array.inputs); - vbo_handle_primitive_restart(ctx, prim, primcount, &ib, - GL_FALSE, ~0, ~0); + vbo->draw_prims(ctx, prim, primcount, &ib, + false, ~0, ~0, NULL, NULL); } else { /* render one prim at a time */ for (i = 0; i < primcount; i++) { @@ -1401,8 +1369,8 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode, prim[0].basevertex = 0; check_buffers_are_unmapped(exec->array.inputs); - vbo_handle_primitive_restart(ctx, prim, 1, &ib, - GL_FALSE, ~0, ~0); + vbo->draw_prims(ctx, prim, 1, &ib, + false, ~0, ~0, NULL, NULL); } } @@ -1464,8 +1432,6 @@ vbo_draw_transform_feedback(struct gl_context *ctx, GLenum mode, if (ctx->Driver.GetTransformFeedbackVertexCount && (ctx->Const.AlwaysUseGetTransformFeedbackVertexCount || - (ctx->Const.PrimitiveRestartInSoftware && - ctx->Array._PrimitiveRestart) || !vbo_all_varyings_in_vbos(exec->array.inputs))) { GLsizei n = ctx->Driver.GetTransformFeedbackVertexCount(ctx, obj, stream); vbo_draw_arrays(ctx, mode, 0, n, numInstances, 0); diff --git a/src/mesa/vbo/vbo_primitive_restart.c b/src/mesa/vbo/vbo_primitive_restart.c index 25c89669ccf..562dedcd5c9 100644 --- a/src/mesa/vbo/vbo_primitive_restart.c +++ b/src/mesa/vbo/vbo_primitive_restart.c @@ -41,8 +41,8 @@ /* * Notes on primitive restart: - * The code below is used when the driver does not support primitive - * restart itself. (ctx->Const.PrimitiveRestartInSoftware == GL_TRUE) + * The code below is used when the driver does not fully support primitive + * restart (for example, if it only does restart index of ~0). * * We map the index buffer, find the restart indexes, unmap * the index buffer then draw the sub-primitives delineated by the restarts.