i965: Make BLORP's BlitFramebuffer follow the GL 4.4 sRGB rules.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 2 Aug 2016 04:56:38 +0000 (21:56 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 8 Aug 2016 21:01:51 +0000 (14:01 -0700)
commitad32dcf630c387e01f415f98717aad08d20ff9f2
tree1cbe76eb275c431d84f31801e35c9e0edd0a3a08
parent352401f6a9e50021e06459017de72c695ae684c2
i965: Make BLORP's BlitFramebuffer follow the GL 4.4 sRGB rules.

OpenGL 4.4 specifies that BlitFramebuffer should perform sRGB encode
and decode like ES 3.x does, but only when GL_FRAMEBUFFER_SRGB is
enabled.  This is technically incompatible in certain cases, but is
more consistent across GL, ES, and WebGL, and more flexible.

The NVIDIA 367.35 drivers appear to follow this behavior.

For the awful spec analysis, please read Piglit's
tests/spec/arb_framebuffer_srgb/blit.c, which explains the differences
between GL 4.1, 4.2, 4.3 (2012), 4.3 (2013), and 4.4, and why this
is the right rule to implement.

Note that ctx->Color.sRGBEnabled is initialized to _mesa_is_gles(ctx),
and ES doesn't have enable/disable flags for GL_FRAMEBUFFER_SRGB, so
it's effectively on all the time.  This means the ES behavior should
be unchanged.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_blorp_blit.cpp