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;