glx: add initial GLX_EXT_framebuffer_sRGB support.
authorDave Airlie <airlied@redhat.com>
Sun, 6 Mar 2011 09:54:37 +0000 (19:54 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 6 Mar 2011 09:56:22 +0000 (19:56 +1000)
this doesn't bind to drivers yet, just enough to in theory make indirect
work against other servers.

I'm really not sure what the rules for adding extensions to the known_gl_extensions list as it looks to be missing a few. are these GL extensions that have GLX
protocol??

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/glx/glxconfig.c
src/glx/glxconfig.h
src/glx/glxext.c
src/glx/glxextensions.c
src/glx/glxextensions.h

index 1d9678f48cdac125a6845e32a13c1593673201ad..805c301efb46ab497f94d9767befe75f9433c548 100644 (file)
@@ -188,6 +188,10 @@ glx_config_get(struct glx_config * mode, int attribute, int *value_return)
       *value_return = mode->yInverted;
       return 0;
 
+   case GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT:
+      *value_return = mode->framebuffer_srgb_capable;
+      return 0;
+
       /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX.
        * It is ONLY for communication between the GLX client and the GLX
        * server.
@@ -251,6 +255,7 @@ glx_config_create_list(unsigned count)
       (*next)->bindToMipmapTexture = GLX_DONT_CARE;
       (*next)->bindToTextureTargets = GLX_DONT_CARE;
       (*next)->yInverted = GLX_DONT_CARE;
+      (*next)->framebuffer_srgb_capable = GLX_DONT_CARE;
 
       next = &((*next)->next);
    }
index f7ee958e4be1d8402e6807a8dea71a50f1213867..a587612cc456246548e5447cc4ae43ad0c676eef 100644 (file)
@@ -100,6 +100,9 @@ struct glx_config {
     GLint bindToMipmapTexture;
     GLint bindToTextureTargets;
     GLint yInverted;
+
+    /* EXT_framebuffer_sRGB */
+    GLint framebuffer_srgb_capable;
 };
 
 #define __GLX_MIN_CONFIG_PROPS 18
index 25d266e18e137bcf6bd4150296dd10a6c62d92fb..38622f382645c7a590cd2f6c5f6d2dd4649775be 100644 (file)
@@ -546,6 +546,10 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count,
          config->yInverted = *bp++;
          break;
 #endif
+      case GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT:
+         config->framebuffer_srgb_capable = *bp++;
+         break;
+
       case GLX_USE_GL:
          if (fbconfig_style_tags)
             bp++;
index ffd466479b497e6ce7d1cf73c5acafff5321c291..d6eb408309c3083156134c870ae602309455e26e 100644 (file)
@@ -83,6 +83,7 @@ static const struct extension_info known_glx_extensions[] = {
    { GLX(EXT_visual_info),             VER(0,0), Y, Y, N, N },
 #endif
    { GLX(EXT_visual_rating),           VER(0,0), Y, Y, N, N },
+   { GLX(EXT_framebuffer_sRGB),        VER(0,0), Y, Y, N, N },
 #ifdef GLX_USE_APPLEGL
    { GLX(MESA_agp_offset),             VER(0,0), N, N, N, N }, /* Deprecated */
    { GLX(MESA_copy_sub_buffer),        VER(0,0), N, N, N, N },
@@ -190,6 +191,7 @@ static const struct extension_info known_gl_extensions[] = {
    { GL(EXT_framebuffer_blit),           VER(0,0), Y, N, N, N },
    { GL(EXT_framebuffer_multisample),    VER(0,0), Y, N, N, N },
    { GL(EXT_framebuffer_object),         VER(0,0), Y, N, N, N },
+   { GL(EXT_framebuffer_sRGB),           VER(0,0), Y, N, N, N },
    { GL(EXT_multi_draw_arrays),          VER(1,4), Y, N, Y, N },
    { GL(EXT_packed_depth_stencil),       VER(0,0), Y, N, N, N },
    { GL(EXT_packed_pixels),              VER(1,2), Y, N, N, N },
index 333b3f9adbdb4eca1da264f0166c41294b3571fe..4fa7a61d3388ec66a02f4f5946e89c105bb68b8d 100644 (file)
@@ -40,6 +40,7 @@ enum
    EXT_visual_info_bit,
    EXT_visual_rating_bit,
    EXT_import_context_bit,
+   EXT_framebuffer_sRGB_bit,
    MESA_agp_offset_bit,
    MESA_copy_sub_buffer_bit,
    MESA_depth_float_bit,
@@ -118,6 +119,7 @@ enum
    GL_EXT_framebuffer_blit_bit,
    GL_EXT_framebuffer_multisample_bit,
    GL_EXT_framebuffer_object_bit,
+   GL_EXT_framebuffer_sRGB_bit,
    GL_EXT_multi_draw_arrays_bit,
    GL_EXT_packed_depth_stencil_bit,
    GL_EXT_packed_pixels_bit,