Mesa (master): meta: Add a state flag for the GL_DITHER

Neil Roberts nroberts at kemper.freedesktop.org
Wed Jul 23 11:14:06 UTC 2014


Module: Mesa
Branch: master
Commit: 05b52efbc977311c96ba31ac5fa2c95fe525d85e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=05b52efbc977311c96ba31ac5fa2c95fe525d85e

Author: Neil Roberts <neil at linux.intel.com>
Date:   Fri Jul  4 15:37:28 2014 +0100

meta: Add a state flag for the GL_DITHER

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.

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

---

 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 89d7a15..604bc21 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);
+   }
+
    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];
 




More information about the mesa-commit mailing list