Module: Mesa Branch: master Commit: ff605091579a0dfbb6a6b3ea0e46d6fed28a278b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff605091579a0dfbb6a6b3ea0e46d6fed28a278b
Author: Brian Paul <[email protected]> Date: Tue Feb 5 12:20:39 2013 -0700 svga: fix sRGB rendering We weren't emitting the SVGA_RS_OUTPUTGAMMA state so sRGB rendering didn't work properly. Fixes piglit's framebuffer-srgb test. Note: This is a candidate for the stable branches. Reviewed-by: Jose Fonseca <[email protected]> --- src/gallium/drivers/svga/svga_state_rss.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/svga/svga_state_rss.c b/src/gallium/drivers/svga/svga_state_rss.c index 6a73924..51d36b7 100644 --- a/src/gallium/drivers/svga/svga_state_rss.c +++ b/src/gallium/drivers/svga/svga_state_rss.c @@ -23,6 +23,7 @@ * **********************************************************/ +#include "util/u_format.h" #include "util/u_inlines.h" #include "util/u_memory.h" #include "pipe/p_defines.h" @@ -248,6 +249,16 @@ emit_rss(struct svga_context *svga, unsigned dirty) EMIT_RS_FLOAT( svga, bias, DEPTHBIAS, fail ); } + if (dirty & SVGA_NEW_FRAME_BUFFER) { + /* XXX: we only look at the first color buffer's sRGB state */ + float gamma = 1.0f; + if (svga->curr.framebuffer.cbufs[0] && + util_format_is_srgb(svga->curr.framebuffer.cbufs[0]->format)) { + gamma = 2.2f; + } + EMIT_RS_FLOAT(svga, gamma, OUTPUTGAMMA, fail); + } + if (dirty & SVGA_NEW_RAST) { /* bitmask of the enabled clip planes */ unsigned enabled = svga->curr.rast->templ.clip_plane_enable; _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
