aboutsummaryrefslogtreecommitdiffstats
path: root/src/freedreno/ir3/ir3.c
diff options
context:
space:
mode:
authorKristian H. Kristensen <[email protected]>2019-10-22 18:19:50 -0700
committerKristian H. Kristensen <[email protected]>2019-11-07 16:37:02 -0800
commit581cd596928bf6bc34ef806e4f015a86ab82f728 (patch)
treedc50bd369c3b0cdbf1d01ed7b792518e3c99a51c /src/freedreno/ir3/ir3.c
parent56ed835bffb0e9cd6770a788b6605b84bd54683c (diff)
freedreno/ir3: Add new synchronization opcodes
There are two new opcodes in use in tesselation control shaders: category 0, opcodes 13 and 15. unk13 is a kill type of instruction that terminates threads where !p0.x and it used to narrow down a patch wavefront to just thread 0. Then, once thread 0 has written the tess levels, it issues unk15, which might signal the TE that another patch has been fully written. Signed-off-by: Kristian H. Kristensen <[email protected]> Acked-by: Eric Anholt <[email protected]> Reviewed-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/freedreno/ir3/ir3.c')
-rw-r--r--src/freedreno/ir3/ir3.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/freedreno/ir3/ir3.c b/src/freedreno/ir3/ir3.c
index fa7aa418027..a0a2dcbd805 100644
--- a/src/freedreno/ir3/ir3.c
+++ b/src/freedreno/ir3/ir3.c
@@ -154,6 +154,9 @@ static int emit_cat0(struct ir3_instruction *instr, void *ptr,
cat0->sync = !!(instr->flags & IR3_INSTR_SY);
cat0->opc_cat = 0;
+ if (instr->opc == OPC_CONDEND || instr->opc == OPC_ENDPATCH)
+ cat0->dummy4 = 16;
+
return 0;
}