[Mesa-dev] [PATCH 4/4] mesa: only check errors when the state change in glClipControl()

Nicolai Hähnle nhaehnle at gmail.com
Mon Jul 31 13:02:49 UTC 2017


For the series:

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>


On 31.07.2017 14:07, Samuel Pitoiset wrote:
> 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 at gmail.com>
> ---
>   src/mesa/main/viewport.c | 30 ++++++++++++++++--------------
>   1 file 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);
>   }
>   
>   /**
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list