[Mesa-dev] [PATCH 3/5] mesa: move updating clamp control derived state out of mesa_update_state_locked

Brian Paul brianp at vmware.com
Fri Mar 29 08:21:01 PDT 2013


On 03/28/2013 03:24 PM, Marek Olšák wrote:
> It has 2 dependencies: glClampColor and the framebuffer, we might just as well
> do the update where those two are changed.
> ---
>   src/mesa/main/blend.c       |   28 ++++++++++++++++++++++++++++
>   src/mesa/main/blend.h       |    6 ++++++
>   src/mesa/main/framebuffer.c |    4 ++++
>   src/mesa/main/state.c       |   36 ------------------------------------
>   4 files changed, 38 insertions(+), 36 deletions(-)
>
> diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c
> index c1b49b1..6cc2310 100644
> --- a/src/mesa/main/blend.c
> +++ b/src/mesa/main/blend.c
> @@ -767,10 +767,12 @@ _mesa_ClampColor(GLenum target, GLenum clamp)
>      case GL_CLAMP_VERTEX_COLOR_ARB:
>         FLUSH_VERTICES(ctx, _NEW_LIGHT);
>         ctx->Light.ClampVertexColor = clamp;
> +      _mesa_update_clamp_vertex_color(ctx);
>         break;
>      case GL_CLAMP_FRAGMENT_COLOR_ARB:
>         FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP);
>         ctx->Color.ClampFragmentColor = clamp;
> +      _mesa_update_clamp_fragment_color(ctx);
>         break;
>      case GL_CLAMP_READ_COLOR_ARB:
>         FLUSH_VERTICES(ctx, _NEW_COLOR);
> @@ -811,6 +813,32 @@ GLboolean _mesa_get_clamp_read_color(const struct gl_context *ctx)
>      return _mesa_get_clamp_color(ctx->ReadBuffer, ctx->Color.ClampReadColor);
>   }
>
> +/**
> + * Update the ctx->Color._ClampFragmentColor field
> + */
> +void _mesa_update_clamp_fragment_color(struct gl_context *ctx)

void
_mesa_update_clamp_fragment_color(struct gl_context *ctx)


> +{
> +   struct gl_framebuffer *fb = ctx->DrawBuffer;
> +
> +   /* Don't clamp if:
> +    * - there is no colorbuffer
> +    * - all colorbuffers are unsigned normalized, so clamping has no effect
> +    * - there is an integer colorbuffer
> +    */
> +   if (!fb || !fb->_HasSNormOrFloatColorBuffer || fb->_IntegerColor)
> +      ctx->Color._ClampFragmentColor = GL_FALSE;
> +   else
> +      ctx->Color._ClampFragmentColor = _mesa_get_clamp_fragment_color(ctx);
> +}
> +
> +/**
> + * Update the ctx->Color._ClampVertexColor field
> + */
> +void _mesa_update_clamp_vertex_color(struct gl_context *ctx)

void
_mesa_update_clamp_vertex_color(struct gl_context *ctx)


> +{
> +   ctx->Light._ClampVertexColor = _mesa_get_clamp_vertex_color(ctx);
> +}
> +
>



More information about the mesa-dev mailing list