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.pohjolai...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev