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>
This commit is contained in:
parent
56bea2a266
commit
58acc32a5e
|
@ -492,13 +492,25 @@ void _mesa_init_viewport(struct gl_context *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static ALWAYS_INLINE void
|
||||||
clip_control(struct gl_context *ctx, GLenum origin, GLenum depth)
|
clip_control(struct gl_context *ctx, GLenum origin, GLenum depth, bool no_error)
|
||||||
{
|
{
|
||||||
if (ctx->Transform.ClipOrigin == origin &&
|
if (ctx->Transform.ClipOrigin == origin &&
|
||||||
ctx->Transform.ClipDepthMode == depth)
|
ctx->Transform.ClipDepthMode == depth)
|
||||||
return;
|
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 */
|
/* Affects transform state and the viewport transform */
|
||||||
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewClipControl ? 0 :
|
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewClipControl ? 0 :
|
||||||
_NEW_TRANSFORM | _NEW_VIEWPORT);
|
_NEW_TRANSFORM | _NEW_VIEWPORT);
|
||||||
|
@ -530,7 +542,7 @@ void GLAPIENTRY
|
||||||
_mesa_ClipControl_no_error(GLenum origin, GLenum depth)
|
_mesa_ClipControl_no_error(GLenum origin, GLenum depth)
|
||||||
{
|
{
|
||||||
GET_CURRENT_CONTEXT(ctx);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (origin != GL_LOWER_LEFT && origin != GL_UPPER_LEFT) {
|
clip_control(ctx, origin, depth, false);
|
||||||
_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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue