diff options
author | Samuel Pitoiset <[email protected]> | 2017-07-31 14:07:06 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-07-31 19:08:44 +0200 |
commit | c6ba70297992aaee4fa31ad3b1c4c0b6a1305177 (patch) | |
tree | b995b8feeeda9fbf881db83ee8344b2a68bb70a7 /src/mesa | |
parent | c787477378e2f79e1ceef23286998f528e6d02f0 (diff) |
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 <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/polygon.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c index f447993072a..a924b849801 100644 --- a/src/mesa/main/polygon.c +++ b/src/mesa/main/polygon.c @@ -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); } |