freedreno/ir3: Start GS with (ss) and (sy)
authorKristian H. Kristensen <hoegsberg@google.com>
Fri, 11 Oct 2019 19:36:49 +0000 (12:36 -0700)
committerKristian H. Kristensen <hoegsberg@google.com>
Thu, 17 Oct 2019 20:43:53 +0000 (13:43 -0700)
We don't know what kind of loads we might have to wait on when coming
in from chsh in the VS so set both sync flags.

Signed-off-by: Kristian H. Kristensen <hoegsberg@google.com>
src/freedreno/ir3/ir3_compiler_nir.c

index 1924b0a549360233e64a04cf52acaaf7a737611f..aa9479ff2dc8517b4753334f6b7a45e05a587fe8 100644 (file)
@@ -3255,6 +3255,19 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler,
                ir3_print(ir);
        }
 
+       /* Set (ss)(sy) on first TCS and GEOMETRY instructions, since we don't
+        * know what we might have to wait on when coming in from VS chsh.
+        */
+       if (so->type == MESA_SHADER_TESS_CTRL ||
+               so->type == MESA_SHADER_GEOMETRY ) {
+               list_for_each_entry (struct ir3_block, block, &ir->block_list, node) {
+                       list_for_each_entry (struct ir3_instruction, instr, &block->instr_list, node) {
+                               instr->flags |= IR3_INSTR_SS | IR3_INSTR_SY;
+                               break;
+                       }
+               }
+       }
+
        so->branchstack = ctx->max_stack;
 
        /* Note that actual_in counts inputs that are not bary.f'd for FS: */