Module: Mesa
Branch: main
Commit: 6b89c71c904b7fd79ba5ef8aa50a4e1d46d86af1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6b89c71c904b7fd79ba5ef8aa50a4e1d46d86af1

Author: Iago Toral Quiroga <ito...@igalia.com>
Date:   Mon Dec 11 10:07:34 2023 +0100

broadcom: fix scheduling dependencies for SETMSF instruction

We use SETMSF to implement discard, so we need to ensure that any
TMU writes after a SETMSF don't actually execute. We emit a TMU flush
before a discard but we also need to ensure that the QPU scheduler
honors this.

Fixes some tests in dEQP-VK.spirv_assembly.instruction.terminate_invocation.*
when we expose the extension that would otherwise fail because the
QPU scheduler would incorrectly move some image writes emitted after a SETMSF
before the SETMSF instruction.

Also fixes spec@arb_shader_atomic_counters@fragment-discard

Reviewed-by: Alejandro PiƱeiro <apinhe...@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26631>

---

 src/broadcom/ci/broadcom-rpi4-fails.txt | 1 -
 src/broadcom/compiler/qpu_schedule.c    | 2 ++
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/broadcom/ci/broadcom-rpi4-fails.txt 
b/src/broadcom/ci/broadcom-rpi4-fails.txt
index a0ac1bb13f8..d4c3f41cd87 100644
--- a/src/broadcom/ci/broadcom-rpi4-fails.txt
+++ b/src/broadcom/ci/broadcom-rpi4-fails.txt
@@ -146,7 +146,6 @@ spec@arb_framebuffer_object@fbo-blit-scaled-linear,Fail
 spec@arb_point_sprite@arb_point_sprite-checkerboard,Fail
 spec@arb_point_sprite@arb_point_sprite-mipmap,Fail
 spec@arb_separate_shader_objects@atomic counter,Fail
-spec@arb_shader_atomic_counters@fragment-discard,Fail
 spec@arb_shader_storage_buffer_object@compi...@atomicmin-swizzle.vert,Fail
 spec@arb_shader_texture_lod@execution@arb_shader_texture_lod-texgrad,Fail
 spec@arb_shader_texture_lod@execution@arb_shader_texture_lod-texgradcube,Fail
diff --git a/src/broadcom/compiler/qpu_schedule.c 
b/src/broadcom/compiler/qpu_schedule.c
index 8c0e65e3fe8..f619ea3c1d8 100644
--- a/src/broadcom/compiler/qpu_schedule.c
+++ b/src/broadcom/compiler/qpu_schedule.c
@@ -381,6 +381,8 @@ calculate_deps(struct schedule_state *state, struct 
schedule_node *n)
                 break;
 
         case V3D_QPU_A_SETMSF:
+                add_write_dep(state, &state->last_tmu_write, n);
+                FALLTHROUGH;
         case V3D_QPU_A_SETREVF:
                 add_write_dep(state, &state->last_tlb, n);
                 break;

Reply via email to