diff options
author | Kristian H. Kristensen <[email protected]> | 2019-10-22 18:19:50 -0700 |
---|---|---|
committer | Kristian H. Kristensen <[email protected]> | 2019-11-07 16:37:02 -0800 |
commit | 581cd596928bf6bc34ef806e4f015a86ab82f728 (patch) | |
tree | dc50bd369c3b0cdbf1d01ed7b792518e3c99a51c /src/freedreno/ir3/ir3.c | |
parent | 56ed835bffb0e9cd6770a788b6605b84bd54683c (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.c | 3 |
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; } |