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 <robdclark@gmail.com>
This commit is contained in:
Eric Anholt
2014-09-04 16:05:00 -07:00
parent bcb722d830
commit 2b76ee9031
5 changed files with 8 additions and 58 deletions
@@ -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.
*/
-3
View File
@@ -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;
-5
View File
@@ -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.
+6 -40
View File
@@ -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);
+2 -2
View File
@@ -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.