From: Dave Airlie Date: Sun, 6 Mar 2011 09:54:37 +0000 (+1000) Subject: glx: add initial GLX_EXT_framebuffer_sRGB support. X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=b09b3e5c8f4f5d71b986bf359b56e7b60424538d glx: add initial GLX_EXT_framebuffer_sRGB support. 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 --- diff --git a/src/glx/glxconfig.c b/src/glx/glxconfig.c index 1d9678f48cd..805c301efb4 100644 --- a/src/glx/glxconfig.c +++ b/src/glx/glxconfig.c @@ -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); } diff --git a/src/glx/glxconfig.h b/src/glx/glxconfig.h index f7ee958e4be..a587612cc45 100644 --- a/src/glx/glxconfig.h +++ b/src/glx/glxconfig.h @@ -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 diff --git a/src/glx/glxext.c b/src/glx/glxext.c index 25d266e18e1..38622f38264 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -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++; diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c index ffd466479b4..d6eb408309c 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -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 }, diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h index 333b3f9adbd..4fa7a61d338 100644 --- a/src/glx/glxextensions.h +++ b/src/glx/glxextensions.h @@ -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,