Module: Mesa Branch: master Commit: 0fe2b397bbee346f72f48f364a78459e5a54c534 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0fe2b397bbee346f72f48f364a78459e5a54c534
Author: Dave Airlie <[email protected]> Date: Thu Jan 5 15:36:43 2012 +0000 softpipe: enable clamping control This enables fragment clamping in softpipe, it passes more tests than it did previously with no regressions, There are still a couple of failures in the SNORM types to investigate. Signed-off-by: Dave Airlie <[email protected]> --- src/gallium/drivers/softpipe/sp_quad_blend.c | 9 ++++++--- src/gallium/drivers/softpipe/sp_screen.c | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c index 7180fa1..d546b14 100644 --- a/src/gallium/drivers/softpipe/sp_quad_blend.c +++ b/src/gallium/drivers/softpipe/sp_quad_blend.c @@ -894,7 +894,7 @@ blend_fallback(struct quad_stage *qs, /* If fixed-point dest color buffer, need to clamp the incoming * fragment colors now. */ - if (clamp) { + if (clamp || softpipe->rasterizer->clamp_fragment_color) { clamp_colors(quadColor); } @@ -982,7 +982,7 @@ blend_single_add_src_alpha_inv_src_alpha(struct quad_stage *qs, /* If fixed-point dest color buffer, need to clamp the incoming * fragment colors now. */ - if (bqs->clamp[0]) { + if (bqs->clamp[0] || qs->softpipe->rasterizer->clamp_fragment_color) { clamp_colors(quadColor); } @@ -1055,7 +1055,7 @@ blend_single_add_one_one(struct quad_stage *qs, /* If fixed-point dest color buffer, need to clamp the incoming * fragment colors now. */ - if (bqs->clamp[0]) { + if (bqs->clamp[0] || qs->softpipe->rasterizer->clamp_fragment_color) { clamp_colors(quadColor); } @@ -1111,6 +1111,9 @@ single_output_color(struct quad_stage *qs, const int itx = (quad->input.x0 & (TILE_SIZE-1)); const int ity = (quad->input.y0 & (TILE_SIZE-1)); + if (qs->softpipe->rasterizer->clamp_fragment_color) + clamp_colors(quadColor); + rebase_colors(bqs->base_format[0], quadColor); for (j = 0; j < QUAD_SIZE; j++) { diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index a9d70f9..37aa585 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -128,6 +128,8 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 7; case PIPE_CAP_CONDITIONAL_RENDER: return 1; + case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: + return 1; default: return 0; } _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
