On 01/16/2011 04:50 PM, Dave Airlie wrote:
From: Dave Airlie<[email protected]>

This adds the get/enable enums and internal gl_config storage
for this extension.

In theory this is all that is needed to enable this extension
from what I can see, since its not mandatory to implement the
features if you don't advertise the visuals or the fb configs.

Signed-off-by: Dave Airlie<[email protected]>
---
  src/mesa/main/enable.c |   11 +++++++++++
  src/mesa/main/get.c    |    5 +++++
  src/mesa/main/mtypes.h |    5 +++++
  3 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index d047586..c4c4e1b 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -968,6 +968,12 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, 
GLboolean state)
           }
           break;

+      /* GL3.0 - GL_framebuffer_sRGB */
+      case GL_FRAMEBUFFER_SRGB_EXT:
+        CHECK_EXTENSION(EXT_framebuffer_sRGB, cap);
+        ctx->Color.sRGBEnabled = state;
+        break;

I think we may need to signal a state change here (_NEW_COLOR or _NEW_BUFFERS).


+
        default:
           goto invalid_enum_error;
     }
@@ -1480,6 +1486,11 @@ _mesa_IsEnabled( GLenum cap )
           }
           return ctx->Array.PrimitiveRestart;

+      /* GL3.0 - GL_framebuffer_sRGB */
+      case GL_FRAMEBUFFER_SRGB_EXT:
+        CHECK_EXTENSION(EXT_framebuffer_sRGB);
+        return ctx->Color.sRGBEnabled;
+
        default:
           goto invalid_enum_error;
     }
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index e223cf4..fa7aa11 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -317,6 +317,7 @@ EXTRA_EXT2(ARB_vertex_program, ARB_fragment_program);
  EXTRA_EXT(ARB_vertex_buffer_object);
  EXTRA_EXT(ARB_geometry_shader4);
  EXTRA_EXT(ARB_copy_buffer);
+EXTRA_EXT(EXT_framebuffer_sRGB);

  static const int
  extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = {
@@ -1238,6 +1239,10 @@ static const struct value_desc values[] = {
     { GL_MINOR_VERSION, CONTEXT_INT(VersionMinor), extra_version_30  },
     { GL_CONTEXT_FLAGS, CONTEXT_INT(Const.ContextFlags), extra_version_30  },

+   /* GL3.0 / GL_EXT_framebuffer_sRGB */
+   { GL_FRAMEBUFFER_SRGB_EXT, CONTEXT_BOOL(Color.sRGBEnabled), 
extra_EXT_framebuffer_sRGB },
+   { GL_FRAMEBUFFER_SRGB_CAPABLE_EXT, BUFFER_INT(Visual.sRGBCapable), 
extra_EXT_framebuffer_sRGB },
+
     /* GL 3.1 */
     /* NOTE: different enum values for GL_PRIMITIVE_RESTART_NV
      * vs. GL_PRIMITIVE_RESTART!
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index a6445b1..1ff353f 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -519,6 +519,9 @@ struct gl_config
     GLint bindToMipmapTexture;
     GLint bindToTextureTargets;
     GLint yInverted;
+
+   /* EXT_framebuffer_sRGB */
+   GLint sRGBCapable;
  };


@@ -749,6 +752,8 @@ struct gl_colorbuffer_attrib

     GLenum ClampFragmentColor; /**<  GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */
     GLenum ClampReadColor;     /**<  GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */
+
+   GLboolean sRGBEnabled;      /**<  Framebuffer sRGB blending/updating 
requested */
  };



Looks good otherwise.

-Brian

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to