On 08/07/2012 03:05 PM, Eric Anholt wrote:
I happened to notice this while looking at a blit pass in l4d2, which had an
optional push/pop around framebuffer srgb setting.  It didn't matter in the
end, but the fix is sitting in my tree now.
---
  src/mesa/main/attrib.c |   13 +++++++++++++
  1 file changed, 13 insertions(+)

diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c
index 8bc7c34..9cab35b 100644
--- a/src/mesa/main/attrib.c
+++ b/src/mesa/main/attrib.c
@@ -135,6 +135,9 @@ struct gl_enable_attrib
     /* GL_ARB_point_sprite / GL_NV_point_sprite */
     GLboolean PointSprite;
     GLboolean FragmentShaderATI;
+
+   /* GL_ARB_framebuffer_sRGB / GL_EXT_framebuffer_sRGB */
+   GLboolean sRGBEnabled;
  };


@@ -322,6 +325,9 @@ _mesa_PushAttrib(GLbitfield mask)
        attr->VertexProgramPointSize = ctx->VertexProgram.PointSizeEnabled;
        attr->VertexProgramTwoSide = ctx->VertexProgram.TwoSideEnabled;
        save_attrib_data(&head, GL_ENABLE_BIT, attr);
+
+      /* GL_ARB_framebuffer_sRGB / GL_EXT_framebuffer_sRGB */
+      attr->sRGBEnabled = ctx->Color.sRGBEnabled;
     }

     if (mask&  GL_EVAL_BIT) {
@@ -617,6 +623,10 @@ pop_enable_group(struct gl_context *ctx, const struct 
gl_enable_attrib *enable)
                     enable->VertexProgramTwoSide,
                     GL_VERTEX_PROGRAM_TWO_SIDE_ARB);

+   /* GL_ARB_framebuffer_sRGB / GL_EXT_framebuffer_sRGB */
+   TEST_AND_UPDATE(ctx->Color.sRGBEnabled, enable->sRGBEnabled,
+                   GL_FRAMEBUFFER_SRGB);
+
     /* texture unit enables */
     for (i = 0; i<  ctx->Const.MaxTextureUnits; i++) {
        const GLbitfield enabled = enable->Texture[i];
@@ -981,6 +991,9 @@ _mesa_PopAttrib(void)
                 _mesa_set_enable(ctx, GL_DITHER, color->DitherFlag);
                 _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR_ARB, 
color->ClampFragmentColor);
                 _mesa_ClampColorARB(GL_CLAMP_READ_COLOR_ARB, 
color->ClampReadColor);
+
+               /* GL_ARB_framebuffer_sRGB / GL_EXT_framebuffer_sRGB */
+               _mesa_set_enable(ctx, GL_FRAMEBUFFER_SRGB, color->sRGBEnabled);
              }
              break;
           case GL_CURRENT_BIT:

Looks OK to me.  Candidate for 8.0 branch?

Reviewed-by: Brian Paul <bri...@vmware.com>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to