summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2017-07-31 14:07:08 +0200
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>2017-07-31 19:08:44 +0200
commit58acc32a5e29c0c08bc58bd8348c5730db802019 (patch)
tree9ef7530776e9af936737e71e9d14d91f49da63ad
parent56bea2a26681967c415a8643bfc87a283a437f03 (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 <samuel.pitoiset@gmail.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
-rw-r--r--src/mesa/main/viewport.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c
index 90c92eadbf..3dce320d1d 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);
}
/**