[PATCH] [xorg-dev][xserver] Full support of sRGB capable fbconfigs.
Tomasz Lis
listom at gmail.com
Tue Dec 4 07:34:32 PST 2012
Sorry again, the patch is OK.
I got confused by gmail.
2012/12/4 Tomasz Lis <listom at gmail.com>
> These are not all the changes, sorry for that.
>
> It seems I don't know how to correctly re-send the patch.
>
> 2012/12/4 <listom at gmail.com>
>
> From: Tomasz Lis <tomasz.lis at intel.com>
>>
>> Changes to correctly initialize the sRGB capability attribute and
>> transfer it between XServer and the client. Modifications include
>> extension string, transferring visual config attribs and fbconfig
>> attribs. Also, attribute is initialized in the modules which do not
>> really use it (xquartz and xwin).
>> This version advertises both ARB and EXT strings, and initializes
>> the capability to default value of FALSE.
>>
>> Signed-off-by: Tomasz Lis <tomasz.lis at intel.com>
>> ---
>> glx/extension_string.c | 2 ++
>> glx/extension_string.h | 2 ++
>> glx/glxcmds.c | 7 +++++--
>> glx/glxdri2.c | 7 +++++++
>> glx/glxdricommon.c | 4 +++-
>> glx/glxscreens.c | 2 ++
>> glx/glxscreens.h | 3 +++
>> hw/xquartz/GL/visualConfigs.c | 3 +++
>> hw/xwin/glx/indirect.c | 2 ++
>> 9 files changed, 29 insertions(+), 3 deletions(-)
>>
>> diff --git a/glx/extension_string.c b/glx/extension_string.c
>> index 544ca1f..70dc915 100644
>> --- a/glx/extension_string.c
>> +++ b/glx/extension_string.c
>> @@ -71,9 +71,11 @@ static const struct extension_info
>> known_glx_extensions[] = {
>> { GLX(ARB_create_context), VER(0,0), N, },
>> { GLX(ARB_create_context_profile), VER(0,0), N, },
>> { GLX(ARB_create_context_robustness), VER(0,0), N, },
>> + { GLX(ARB_framebuffer_sRGB), VER(1,1), N, },
>> { GLX(ARB_multisample), VER(1,4), Y, },
>>
>> { GLX(EXT_create_context_es2_profile), VER(0,0), N, },
>> + { GLX(EXT_framebuffer_sRGB), VER(1,1), N, },
>> { GLX(EXT_import_context), VER(0,0), Y, },
>> { GLX(EXT_texture_from_pixmap), VER(0,0), Y, },
>> { GLX(EXT_visual_info), VER(0,0), Y, },
>> diff --git a/glx/extension_string.h b/glx/extension_string.h
>> index 7a4a8b1..3ce5593 100644
>> --- a/glx/extension_string.h
>> +++ b/glx/extension_string.h
>> @@ -39,8 +39,10 @@ enum {
>> ARB_create_context_bit = 0,
>> ARB_create_context_profile_bit,
>> ARB_create_context_robustness_bit,
>> + ARB_framebuffer_sRGB_bit,
>> ARB_multisample_bit,
>> EXT_create_context_es2_profile_bit,
>> + EXT_framebuffer_sRGB_bit,
>> EXT_import_context_bit,
>> EXT_texture_from_pixmap_bit,
>> EXT_visual_info_bit,
>> diff --git a/glx/glxcmds.c b/glx/glxcmds.c
>> index c1f4e22..720a1a8 100644
>> --- a/glx/glxcmds.c
>> +++ b/glx/glxcmds.c
>> @@ -913,7 +913,7 @@ __glXDisp_CopyContext(__GLXclientState * cl, GLbyte *
>> pc)
>>
>> enum {
>> GLX_VIS_CONFIG_UNPAIRED = 18,
>> - GLX_VIS_CONFIG_PAIRED = 20
>> + GLX_VIS_CONFIG_PAIRED = 22
>> };
>>
>> enum {
>> @@ -1005,6 +1005,8 @@ __glXDisp_GetVisualConfigs(__GLXclientState * cl,
>> GLbyte * pc)
>> buf[p++] = modes->samples;
>> buf[p++] = GLX_SAMPLE_BUFFERS_SGIS;
>> buf[p++] = modes->sampleBuffers;
>> + buf[p++] = GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT;
>> + buf[p++] = modes->sRGBCapable;
>> buf[p++] = 0; /* copy over visualSelectGroup
>> (GLX_VISUAL_SELECT_GROUP_SGIX)? */
>> buf[p++] = 0;
>>
>> @@ -1017,7 +1019,7 @@ __glXDisp_GetVisualConfigs(__GLXclientState * cl,
>> GLbyte * pc)
>> return Success;
>> }
>>
>> -#define __GLX_TOTAL_FBCONFIG_ATTRIBS (36)
>> +#define __GLX_TOTAL_FBCONFIG_ATTRIBS (37)
>> #define __GLX_FBCONFIG_ATTRIBS_LENGTH (__GLX_TOTAL_FBCONFIG_ATTRIBS * 2)
>> /**
>> * Send the set of GLXFBConfigs to the client. There is not currently
>> @@ -1109,6 +1111,7 @@ DoGetFBConfigs(__GLXclientState * cl, unsigned
>> screen)
>> WRITE_PAIR(GLX_BIND_TO_MIPMAP_TEXTURE_EXT,
>> modes->bindToMipmapTexture);
>> WRITE_PAIR(GLX_BIND_TO_TEXTURE_TARGETS_EXT,
>> modes->bindToTextureTargets);
>> + WRITE_PAIR(GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, modes->sRGBCapable);
>>
>> if (client->swapped) {
>> __GLX_SWAP_INT_ARRAY(buf, __GLX_FBCONFIG_ATTRIBS_LENGTH);
>> diff --git a/glx/glxdri2.c b/glx/glxdri2.c
>> index bce1bfa..ef7afb4 100644
>> --- a/glx/glxdri2.c
>> +++ b/glx/glxdri2.c
>> @@ -882,6 +882,13 @@ initializeExtensions(__GLXDRIscreen * screen)
>> "AIGLX: enabled GLX_SGI_swap_control and
>> GLX_MESA_swap_control\n");
>> }
>>
>> + /* enable EXT_framebuffer_sRGB extension (even if there are no sRGB
>> capable fbconfigs) */
>> + {
>> + __glXEnableExtension(screen->glx_enable_bits,
>> + "GLX_EXT_framebuffer_sRGB");
>> + LogMessage(X_INFO, "AIGLX: enabled GLX_EXT_framebuffer_sRGB\n");
>> + }
>> +
>> for (i = 0; extensions[i]; i++) {
>> #ifdef __DRI_READ_DRAWABLE
>> if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
>> diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
>> index c90f380..b027f24 100644
>> --- a/glx/glxdricommon.c
>> +++ b/glx/glxdricommon.c
>> @@ -105,7 +105,9 @@ __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits),
>> __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB, bindToTextureRgb),
>> __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGBA, bindToTextureRgba),
>> __ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE,
>> bindToMipmapTexture),
>> - __ATTRIB(__DRI_ATTRIB_YINVERTED, yInverted),};
>> + __ATTRIB(__DRI_ATTRIB_YINVERTED, yInverted),
>> + __ATTRIB(__DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE, sRGBCapable),
>> + };
>>
>> static void
>> setScalar(__GLXconfig * config, unsigned int attrib, unsigned int value)
>> diff --git a/glx/glxscreens.c b/glx/glxscreens.c
>> index 61d590c..e87256d 100644
>> --- a/glx/glxscreens.c
>> +++ b/glx/glxscreens.c
>> @@ -164,7 +164,9 @@ static char GLXServerVendorName[] = "SGI";
>> unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
>> unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
>> static char GLXServerExtensions[] =
>> + "GLX_ARB_framebuffer_sRGB "
>> "GLX_ARB_multisample "
>> + "GLX_EXT_framebuffer_sRGB "
>> "GLX_EXT_visual_info "
>> "GLX_EXT_visual_rating "
>> "GLX_EXT_import_context "
>> diff --git a/glx/glxscreens.h b/glx/glxscreens.h
>> index b29df58..0a7b604 100644
>> --- a/glx/glxscreens.h
>> +++ b/glx/glxscreens.h
>> @@ -102,6 +102,9 @@ struct __GLXconfig {
>> GLint bindToMipmapTexture;
>> GLint bindToTextureTargets;
>> GLint yInverted;
>> +
>> + /* ARB_framebuffer_sRGB */
>> + GLint sRGBCapable;
>> };
>>
>> GLint glxConvertToXVisualType(int visualType);
>> diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
>> index e37eefb..5efd04f 100644
>> --- a/hw/xquartz/GL/visualConfigs.c
>> +++ b/hw/xquartz/GL/visualConfigs.c
>> @@ -326,6 +326,9 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int
>> screenNumber)
>> c->bindToTextureTargets = 0;
>> c->yInverted = 0;
>>
>> + /* EXT_framebuffer_sRGB */
>> + c->sRGBCapable = GL_FALSE;
>> +
>> c = c->next;
>> }
>> }
>> diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c
>> index c0069a2..e6faf19 100644
>> --- a/hw/xwin/glx/indirect.c
>> +++ b/hw/xwin/glx/indirect.c
>> @@ -2017,6 +2017,7 @@ glxWinCreateConfigs(HDC hdc, glxWinScreen * screen)
>> c->base.bindToMipmapTexture = -1;
>> c->base.bindToTextureTargets = -1;
>> c->base.yInverted = -1;
>> + c->base.sRGBCapable = 0;
>>
>> n++;
>>
>> @@ -2411,6 +2412,7 @@ glxWinCreateConfigsExt(HDC hdc, glxWinScreen *
>> screen)
>> GLX_TEXTURE_1D_BIT_EXT | GLX_TEXTURE_2D_BIT_EXT |
>> GLX_TEXTURE_RECTANGLE_BIT_EXT;
>> c->base.yInverted = -1;
>> + c->base.sRGBCapable = 0;
>>
>> n++;
>>
>> --
>> 1.7.9.5
>>
>> _______________________________________________
>> xorg-devel at lists.x.org: X.Org development
>> Archives: http://lists.x.org/archives/xorg-devel
>> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20121204/552a6a59/attachment.html>
More information about the xorg-devel
mailing list