radeonsi: don't write undefined output channels to LDS in LS
authorMarek Olšák <marek.olsak@amd.com>
Fri, 17 Nov 2017 03:56:13 +0000 (04:56 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Sat, 25 Nov 2017 16:16:56 +0000 (17:16 +0100)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index bca0ca92248fe3c8e7d52cee41adb46f618e94c4..16036e3163792ed9332245bc6cf68bd65edbba5e 100644 (file)
@@ -3176,6 +3176,9 @@ static void si_llvm_emit_ls_epilogue(struct lp_build_tgsi_context *bld_base)
                                        LLVMConstInt(ctx->i32, param * 4, 0), "");
 
                for (chan = 0; chan < 4; chan++) {
+                       if (!(info->output_usagemask[i] & (1 << chan)))
+                               continue;
+
                        lds_store(bld_base, chan, dw_addr,
                                  LLVMBuildLoad(ctx->ac.builder, out_ptr[chan], ""));
                }