From 1823bb67f9859aa6bd5e2b115d40e1be62bb6586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ADra=20Canal?= Date: Sun, 8 Feb 2026 15:51:50 -0300 Subject: [PATCH] broadcom/ci: don't skip dynamic loop tests in RPi 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These tests were previously skipped because they contain dynamic loops in the VS, which can cause GPU resets on VC4. However, (1) the only tests that cause GPU resets are the ones that have divergent loops and (2) now, the compiler is able to fail shader linking when it finds divergent loops. Therefore, allow tests with non-divergent loops to run on the CI and add tests with divergent loops to the fail list. Reviewed-by: Iago Toral Quiroga Signed-off-by: MaĆ­ra Canal Part-of: --- src/broadcom/ci/broadcom-rpi3-fails.txt | 8 +++++ src/broadcom/ci/broadcom-rpi3-skips.txt | 47 ------------------------- 2 files changed, 8 insertions(+), 47 deletions(-) diff --git a/src/broadcom/ci/broadcom-rpi3-fails.txt b/src/broadcom/ci/broadcom-rpi3-fails.txt index 699d94b3785..43bffd984b0 100644 --- a/src/broadcom/ci/broadcom-rpi3-fails.txt +++ b/src/broadcom/ci/broadcom-rpi3-fails.txt @@ -43,6 +43,14 @@ dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat_non_square,F # mag. Also a line of pixels through the image in minification. dEQP-GLES2.functional.texture.wrap.clamp_clamp_nearest_npot_etc1,Fail +# VC4 hardware doesn't have support for non-uniform loops in the vertex shader. +# The execution of non-uniform loops in VS can cause infinite loops and lead +# to GPU hangs. Therefore, the compiler fails shader linking in the presence of +# divergent loops. +spec@glsl-1.10@execution@glsl-vs-if-nested-loop,Fail +shaders@glsl-vs-loop,Fail +shaders@glsl-vs-loop-nested,Fail + # Despite exposing GL 2.1, the HW doesn't actually support 3D textures so we set # 0 max levels. These tests fail (or assertion fail) as a result. spec@!opengl 1.1@max-texture-size,Crash diff --git a/src/broadcom/ci/broadcom-rpi3-skips.txt b/src/broadcom/ci/broadcom-rpi3-skips.txt index b75466cbe0b..3b0539d42c6 100644 --- a/src/broadcom/ci/broadcom-rpi3-skips.txt +++ b/src/broadcom/ci/broadcom-rpi3-skips.txt @@ -5,53 +5,6 @@ # This is causing a binning memory overflow problem dEQP-GLES2.functional.fragment_ops.scissor.outside_render_line -# Conformance issue: VC4 needs dynamic loops in the VS to cause a -# shader link failure. -# -# The issue is that the HW doesn't have an exec mask at dispatch -# for the VS, so the shouldn't-be-exec channels have undefined -# contents and may cause infinite loops, leading to GPU hangs. The -# process of GPU hang reset causes flakes in whatever other jobs are -# running simultaneously, so we can't even leave these in the flakes -# list for tracking. -dEQP-GLES2.functional.shaders.loops.*dynamic.*vertex - -# Same issue mentioned above: VC4 hardware doesn't have support for -# dynamic loops. The execution of dynamic loops can cause infinite -# loops and lead to GPU hangs. Therefore, skip those tests to avoid -# issues with other tests running simultaneously. -spec@glsl-1.10@execution@copy-propagation@glsl-vs-copy-propagation-1 -spec@glsl-1.10@execution@glsl-vs-if-nested-loop -spec@glsl-1.10@execution@glsl-vs-vectorize-between-basic-blocks-loop -spec@glsl-1.10@execution@loops@glsl-vs-loop-300 -spec@glsl-1.10@execution@loops@glsl-vs-loop-break -spec@glsl-1.10@execution@texcoord-array -spec@glsl-1.10@execution@vs-loop-array-index-unroll -spec@glsl-1.10@execution@vs-loop-complex-no-unroll -spec@glsl-1.10@execution@vs-loop-complex-unroll -spec@glsl-1.10@execution@vs-loop-complex-unroll-cf-before-terminators -spec@glsl-1.10@execution@vs-loop-complex-unroll-cf-inside-terminator -spec@glsl-1.10@execution@vs-loop-complex-unroll-with-else-break -spec@glsl-1.10@execution@vs-loop-complex-with-else-break -spec@glsl-1.10@execution@vs-loop-partial-unroll-multiple-breaks -spec@glsl-1.10@execution@vs-loop-partial-unroll-multiple-breaks-loop-phi -spec@glsl-1.10@execution@vs-loop-variable-iteration-limit-unroll -spec@glsl-1.10@execution@vs-loop-variable-iteration-limit-unroll2 -spec@glsl-1.10@execution@vs-loop-variable-iteration-limit-unroll3 -spec@glsl-1.10@execution@vs-loop-variable-iteration-limit-unroll4 -spec@glsl-1.10@execution@vs-loop-zero-iterations-two-exits -spec@glsl-1.10@execution@vs-nested-return-sibling-loop -spec@glsl-1.10@execution@vs-nested-return-sibling-loop2 -spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-dst-in-loop -spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-dst-in-nested-loop-combined -spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-src-in-loop -spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-src-in-nested-loop-combined -spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-src-in-nested-loop-inner -spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-src-in-nested-loop-outer -shaders@glsl-vs-loop -shaders@glsl-vs-loop-nested -shaders@glsl-uniform-interstage-limits - # It causes GPU resets that can affect tests that are running # simultaneously. spec@arb_map_buffer_alignment.*