Mesa (master): radeonsi: bypass alpha-test for integer colorbuffers

Marek Olšák mareko at kemper.freedesktop.org
Wed Sep 25 18:50:33 UTC 2013


Module: Mesa
Branch: master
Commit: f9ea435ebc9360e186e44fc4e9c155dc073fe8ac
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9ea435ebc9360e186e44fc4e9c155dc073fe8ac

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Mon Sep 23 21:41:34 2013 +0200

radeonsi: bypass alpha-test for integer colorbuffers

Fixes spec/EXT_texture_integer/fbo-blending.

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>

---

 src/gallium/drivers/radeonsi/si_state.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 8f7edaf..b5d625a 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2352,7 +2352,16 @@ static INLINE void si_shader_selector_key(struct pipe_context *ctx,
 		}
 		if (rctx->queued.named.dsa) {
 			key->ps.alpha_func = rctx->queued.named.dsa->alpha_func;
-			key->ps.alpha_ref = rctx->queued.named.dsa->alpha_ref;
+
+			/* Alpha-test should be disabled if colorbuffer 0 is integer. */
+			if (rctx->framebuffer.nr_cbufs &&
+			    rctx->framebuffer.cbufs[0] &&
+			    util_format_is_pure_integer(rctx->framebuffer.cbufs[0]->texture->format))
+				key->ps.alpha_func = PIPE_FUNC_ALWAYS;
+
+			if (key->ps.alpha_func != PIPE_FUNC_ALWAYS &&
+			    key->ps.alpha_func != PIPE_FUNC_NEVER)
+				key->ps.alpha_ref = rctx->queued.named.dsa->alpha_ref;
 		} else {
 			key->ps.alpha_func = PIPE_FUNC_ALWAYS;
 		}




More information about the mesa-commit mailing list