From 06a48375c820171ca7b868f01c10e4cf795e3ee4 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 22 Aug 2024 15:20:57 -0400 Subject: [PATCH] agx: fix wait_pix scheduling with eMRT unclear how this didn't blow up before. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_opcodes.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/asahi/compiler/agx_opcodes.py b/src/asahi/compiler/agx_opcodes.py index 75adfe62fd2..496c13013d4 100644 --- a/src/asahi/compiler/agx_opcodes.py +++ b/src/asahi/compiler/agx_opcodes.py @@ -422,10 +422,13 @@ op("stop", (0x88, 0xFFFF, 2, _), dests = 0, can_eliminate = False, schedule_class = "invalid") op("trap", (0x08, 0xFFFF, 2, _), dests = 0, can_eliminate = False, schedule_class = "invalid") + +# These are modelled as total barriers since they can guard global memory +# access too, and even need to be properly ordered with loads. op("wait_pix", (0x48, 0xFF, 4, _), dests = 0, imms = [WRITEOUT], - can_eliminate = False, schedule_class = "coverage") + can_eliminate = False, schedule_class = "barrier") op("signal_pix", (0x58, 0xFF, 4, _), dests = 0, imms = [WRITEOUT], - can_eliminate = False, schedule_class = "coverage") + can_eliminate = False, schedule_class = "barrier") # Sources are the data vector, the coordinate vector, the LOD, the bindless # table if present (zero for texture state registers), and texture index.