radeonsi: skip ES output stores for undefined output components
authorMarek Olšák <marek.olsak@amd.com>
Thu, 17 May 2018 03:47:15 +0000 (23:47 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 18 May 2018 17:38:07 +0000 (13:38 -0400)
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/gallium/drivers/radeonsi/si_shader.c

index e8d08cd8e7f913b5accc8f9c0c9e128962f76dc3..0d24c3af10a0c679894768b243bd6cc31dc6cd38 100644 (file)
@@ -3598,6 +3598,9 @@ static void si_llvm_emit_es_epilogue(struct ac_shader_abi *abi,
                                                      info->output_semantic_index[i]);
 
                for (chan = 0; chan < 4; chan++) {
+                       if (!(info->output_usagemask[i] & (1 << chan)))
+                               continue;
+
                        LLVMValueRef out_val = LLVMBuildLoad(ctx->ac.builder, addrs[4 * i + chan], "");
                        out_val = ac_to_integer(&ctx->ac, out_val);