[Mesa-dev] [PATCH 1/2] meta: Add a state flag for the GL_DITHER

Pohjolainen, Topi topi.pohjolainen at intel.com
Mon Jul 7 01:50:48 PDT 2014


On Fri, Jul 04, 2014 at 05:26:43PM +0100, Neil Roberts wrote:
> The Meta implementation of glClearTexSubImage is going to want to ensure that
> dithering is disabled so that it can get a consistent color across the whole
> texture when clearing. This adds a state flag to easily save it and set it to
> the default value when performing meta operations.
> ---
>  src/mesa/drivers/common/meta.c | 8 ++++++++
>  src/mesa/drivers/common/meta.h | 4 ++++
>  2 files changed, 12 insertions(+)
> 
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index f1f5729..10dd418 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -505,6 +505,11 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
>           _mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, GL_FALSE);
>     }
>  
> +   if (state & MESA_META_DITHER) {
> +      save->DitherFlag = ctx->Color.DitherFlag;
> +      _mesa_set_enable(ctx, GL_DITHER, GL_TRUE);

All the other state flags considered in _mesa_meta_begin() are explicitly set
as disabled. And having noticed that you unconditionally disable dithering
also in cleartexsubimage_using_fbo() I'm wondering if I'm missing something.

Otherwise looks good to me:

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>

> +   }
> +
>     if (state & MESA_META_COLOR_MASK) {
>        memcpy(save->ColorMask, ctx->Color.ColorMask,
>               sizeof(ctx->Color.ColorMask));
> @@ -875,6 +880,9 @@ _mesa_meta_end(struct gl_context *ctx)
>           _mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, save->ColorLogicOpEnabled);
>     }
>  
> +   if (state & MESA_META_DITHER)
> +      _mesa_set_enable(ctx, GL_DITHER, save->DitherFlag);
> +
>     if (state & MESA_META_COLOR_MASK) {
>        GLuint i;
>        for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
> diff --git a/src/mesa/drivers/common/meta.h b/src/mesa/drivers/common/meta.h
> index 765f8df..b8d992c 100644
> --- a/src/mesa/drivers/common/meta.h
> +++ b/src/mesa/drivers/common/meta.h
> @@ -59,6 +59,7 @@
>  #define MESA_META_FRAMEBUFFER_SRGB     0x200000
>  #define MESA_META_OCCLUSION_QUERY      0x400000
>  #define MESA_META_DRAW_BUFFERS         0x800000
> +#define MESA_META_DITHER              0x1000000
>  /**\}*/
>  
>  /**
> @@ -84,6 +85,9 @@ struct save_state
>     GLbitfield BlendEnabled;
>     GLboolean ColorLogicOpEnabled;
>  
> +   /** MESA_META_DITHER */
> +   GLboolean DitherFlag;
> +
>     /** MESA_META_COLOR_MASK */
>     GLubyte ColorMask[MAX_DRAW_BUFFERS][4];
>  
> -- 
> 1.9.3
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list