Mesa (master): r600g: fix the CB_SHADER_MASK setup

Marek Olšák mareko at kemper.freedesktop.org
Sun Aug 2 22:19:02 UTC 2015


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Aug  2 15:18:36 2015 +0200

r600g: fix the CB_SHADER_MASK setup

This fixes the single-sample fast clear hang.

Cc: 10.6 <mesa-stable at lists.freedesktop.org>
Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>
Reviewed-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/r600/evergreen_state.c |    8 ++++----
 src/gallium/drivers/r600/r600_shader.c     |    1 +
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index 5c8fd0d..13ecc46 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -1736,10 +1736,10 @@ static void evergreen_emit_cb_misc_state(struct r600_context *rctx, struct r600_
 
 	r600_write_context_reg_seq(cs, R_028238_CB_TARGET_MASK, 2);
 	radeon_emit(cs, a->blend_colormask & fb_colormask); /* R_028238_CB_TARGET_MASK */
-	/* Always enable the first colorbuffer in CB_SHADER_MASK. This
-	 * will assure that the alpha-test will work even if there is
-	 * no colorbuffer bound. */
-	radeon_emit(cs, 0xf | (a->dual_src_blend ? ps_colormask : 0) | fb_colormask); /* R_02823C_CB_SHADER_MASK */
+	/* This must match the used export instructions exactly.
+	 * Other values may lead to undefined behavior and hangs.
+	 */
+	radeon_emit(cs, ps_colormask); /* R_02823C_CB_SHADER_MASK */
 }
 
 static void evergreen_emit_db_state(struct r600_context *rctx, struct r600_atom *atom)
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 09f50f5..8d1f95a 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -2490,6 +2490,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
 			output[j].array_base = 0;
 			output[j].op = CF_OP_EXPORT;
 			j++;
+			shader->nr_ps_color_exports++;
 		}
 
 		noutput = j;




More information about the mesa-commit mailing list