I'm using Ubuntu 12.04 (so Mesa 8.0.2 with patches), on a Thinkpad x201 with Intel HD Graphics (Ironlake).
I'm trying to render to the backbuffer (ie. no FBOs) with hardware sRGB encode; that is, I've requested a visual with GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT=1, and I'm doing glEnable(GL_FRAMEBUFFER_SRGB). However, it simply has no effect; I can turn it on and off and it doesn't make any difference to my output. (On an nVidia machine with nVidia's proprietary drivers, there's a clear difference with the same code.) I'm not getting any errors from glGetError() either.
It should be said that if I use glGetIntegerv(GL_FRAMEBUFFER_SRGB_CAPABLE_EXT) (which, strangely enough, is not part of the ARB extension?), it returns 0, so in some way, the driver is correct, but surely the hardware supports this? I tried applying http://cgit.freedesktop.org/mesa/mesa/commit/?id=51e41a0d894109249448ecc6a6bfc09e095acada in the hopes that it might help, but seemingly it was not relevant here.
Right, that patch only applies for Gallium drivers, not i965.
*** Bug 60633 has been marked as a duplicate of this bug. ***
Patch on the list:
Author: Eric Anholt <email@example.com>
Date: Fri Feb 15 07:41:42 2013 -0800
i965: Make sRGB-capable framebuffers by default.
The GLX extension lets you expose visuals that explicitly guarantee you
that the GL_FRAMEBUFFER_SRGB_CAPABLE flag will be set, but we can set
the flag even while the visual doesn't provide the guarantee. This
appears to be consistent with other implementations, as we've seen
several apps now that don't require an srgb visual and assume sRGB will
work without checking the GL_FRAMEBUFFER_SRGB_CAPABLE flag.
Reviewed-and-tested-by: Ian Romanick <firstname.lastname@example.org>