diff options
author | Samuel Pitoiset <[email protected]> | 2017-07-31 14:07:08 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-07-31 19:08:44 +0200 |
commit | 58acc32a5e29c0c08bc58bd8348c5730db802019 (patch) | |
tree | 9ef7530776e9af936737e71e9d14d91f49da63ad /src/mesa/main/viewport.c | |
parent | 56bea2a26681967c415a8643bfc87a283a437f03 (diff) |
mesa: only check errors when the state change in glClipControl()
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/main/viewport.c')
-rw-r--r-- | src/mesa/main/viewport.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c index 90c92eadbf6..3dce320d1d0 100644 --- a/src/mesa/main/viewport.c +++ b/src/mesa/main/viewport.c @@ -492,13 +492,25 @@ void _mesa_init_viewport(struct gl_context *ctx) } -static void -clip_control(struct gl_context *ctx, GLenum origin, GLenum depth) +static ALWAYS_INLINE void +clip_control(struct gl_context *ctx, GLenum origin, GLenum depth, bool no_error) { if (ctx->Transform.ClipOrigin == origin && ctx->Transform.ClipDepthMode == depth) return; + if (!no_error && + origin != GL_LOWER_LEFT && origin != GL_UPPER_LEFT) { + _mesa_error(ctx, GL_INVALID_ENUM, "glClipControl"); + return; + } + + if (!no_error && + depth != GL_NEGATIVE_ONE_TO_ONE && depth != GL_ZERO_TO_ONE) { + _mesa_error(ctx, GL_INVALID_ENUM, "glClipControl"); + return; + } + /* Affects transform state and the viewport transform */ FLUSH_VERTICES(ctx, ctx->DriverFlags.NewClipControl ? 0 : _NEW_TRANSFORM | _NEW_VIEWPORT); @@ -530,7 +542,7 @@ void GLAPIENTRY _mesa_ClipControl_no_error(GLenum origin, GLenum depth) { GET_CURRENT_CONTEXT(ctx); - clip_control(ctx, origin, depth); + clip_control(ctx, origin, depth, true); } @@ -551,17 +563,7 @@ _mesa_ClipControl(GLenum origin, GLenum depth) return; } - if (origin != GL_LOWER_LEFT && origin != GL_UPPER_LEFT) { - _mesa_error(ctx, GL_INVALID_ENUM, "glClipControl"); - return; - } - - if (depth != GL_NEGATIVE_ONE_TO_ONE && depth != GL_ZERO_TO_ONE) { - _mesa_error(ctx, GL_INVALID_ENUM, "glClipControl"); - return; - } - - clip_control(ctx, origin, depth); + clip_control(ctx, origin, depth, false); } /** |