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:
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user