From: Marek Olšák <marek.ol...@amd.com>

This doesn't fix a known bug, but better safe than sorry.

Also, simplify the expression in si_shader.c.
---
 src/gallium/drivers/radeonsi/si_shader.c        | 5 ++---
 src/gallium/drivers/radeonsi/si_state_shaders.c | 4 +++-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index b7c44b9..f322c4e 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -2189,9 +2189,8 @@ static void si_llvm_emit_fs_epilogue(struct 
lp_build_tgsi_context * bld_base)
                        /* This instruction will be emitted at the end of the 
shader. */
                        memcpy(last_args, args, sizeof(args));
 
-                       /* Handle FS_COLOR0_WRITES_ALL_CBUFS. */
-                       if 
(shader->selector->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS] &&
-                           semantic_index == 0 &&
+                       /* If last_cbuf > 0, FS_COLOR0_WRITES_ALL_CBUFS is 
true. */
+                       if (semantic_index == 0 &&
                            si_shader_ctx->shader->key.ps.last_cbuf > 0) {
                                for (int c = 1; c <= 
si_shader_ctx->shader->key.ps.last_cbuf; c++) {
                                        si_llvm_init_export_args_load(bld_base,
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 61db8ef..4b007ec 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -552,8 +552,10 @@ static inline void si_shader_selector_key(struct 
pipe_context *ctx,
        case PIPE_SHADER_FRAGMENT: {
                struct si_state_rasterizer *rs = sctx->queued.named.rasterizer;
 
-               if 
(sel->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS])
+               if 
(sel->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS] &&
+                   sel->info.colors_written == 0x1)
                        key->ps.last_cbuf = 
MAX2(sctx->framebuffer.state.nr_cbufs, 1) - 1;
+
                key->ps.export_16bpc = sctx->framebuffer.export_16bpc;
 
                if (rs) {
-- 
2.1.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to