Browse Source

mesa: only check errors when the state change in glCullFace()

When this GL call is a no-op, it should be a little faster in
the errors path only.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
tags/17.3-branchpoint
Samuel Pitoiset 8 years ago
parent
commit
c6ba702979
1 changed files with 10 additions and 9 deletions
  1. 10
    9
      src/mesa/main/polygon.c

+ 10
- 9
src/mesa/main/polygon.c View File

@@ -50,12 +50,18 @@
* change, flushes the vertices and notifies the driver via
* the dd_function_table::CullFace callback.
*/
static void
cull_face(struct gl_context *ctx, GLenum mode)
static ALWAYS_INLINE void
cull_face(struct gl_context *ctx, GLenum mode, bool no_error)
{
if (ctx->Polygon.CullFaceMode == mode)
return;

if (!no_error &&
mode != GL_FRONT && mode != GL_BACK && mode != GL_FRONT_AND_BACK) {
_mesa_error(ctx, GL_INVALID_ENUM, "glCullFace");
return;
}

FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.CullFaceMode = mode;
@@ -69,7 +75,7 @@ void GLAPIENTRY
_mesa_CullFace_no_error(GLenum mode)
{
GET_CURRENT_CONTEXT(ctx);
cull_face(ctx, mode);
cull_face(ctx, mode, true);
}


@@ -81,12 +87,7 @@ _mesa_CullFace(GLenum mode)
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx, "glCullFace %s\n", _mesa_enum_to_string(mode));

if (mode != GL_FRONT && mode != GL_BACK && mode != GL_FRONT_AND_BACK) {
_mesa_error(ctx, GL_INVALID_ENUM, "glCullFace");
return;
}

cull_face(ctx, mode);
cull_face(ctx, mode, false);
}



Loading…
Cancel
Save