Mesa (staging/21.2): pan/bi: Extend bi_add_nop_for_atest for tilebuffer loads

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Aug 23 17:44:11 UTC 2021


Module: Mesa
Branch: staging/21.2
Commit: 6ce2622439abab6b0238d23ef19d6ef6ac5db60f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ce2622439abab6b0238d23ef19d6ef6ac5db60f

Author: Icecream95 <ixn at disroot.org>
Date:   Sat Aug 14 23:36:27 2021 +1200

pan/bi: Extend bi_add_nop_for_atest for tilebuffer loads

Fixes framebuffer_fetch and blend_equation_advanced dEQP tests on v6.

v2: Use clause dependencies rather than comparing the message type
v3: Shift the BIFROST_SLOT_* constants before using them as a mask

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12375>
(cherry picked from commit 295807e6669025e0c31b78fc0aba276e58cf8dc2)

---

 .pick_status.json                                  |   2 +-
 .../panfrost/ci/deqp-panfrost-g72-fails.txt        | 129 ---------------------
 src/panfrost/bifrost/bi_schedule.c                 |  10 +-
 3 files changed, 7 insertions(+), 134 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 17109a390c2..bcba77d3eaa 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -238,7 +238,7 @@
         "description": "pan/bi: Extend bi_add_nop_for_atest for tilebuffer loads",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null
     },
diff --git a/src/gallium/drivers/panfrost/ci/deqp-panfrost-g72-fails.txt b/src/gallium/drivers/panfrost/ci/deqp-panfrost-g72-fails.txt
index 03a9ff5e49a..aee45fb997a 100644
--- a/src/gallium/drivers/panfrost/ci/deqp-panfrost-g72-fails.txt
+++ b/src/gallium/drivers/panfrost/ci/deqp-panfrost-g72-fails.txt
@@ -1,91 +1,3 @@
-dEQP-GLES31.functional.blend_equation_advanced.barrier.colorburn,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.colordodge,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.darken,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.difference,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.exclusion,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.hardlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_color,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_hue,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_luminosity,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_saturation,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.lighten,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.multiply,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.overlay,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.screen,Fail
-dEQP-GLES31.functional.blend_equation_advanced.barrier.softlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.colorburn,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.colordodge,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.darken,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.difference,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.exclusion,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.hardlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_color,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_hue,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_luminosity,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_saturation,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.lighten,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.multiply,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.overlay,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.screen,Fail
-dEQP-GLES31.functional.blend_equation_advanced.basic.softlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.colorburn,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.colordodge,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.darken,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.difference,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.exclusion,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.hardlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.hsl_color,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.hsl_hue,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.hsl_luminosity,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.hsl_saturation,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.lighten,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.colorburn,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.colordodge,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.darken,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.difference,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.exclusion,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.hardlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.hsl_color,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.hsl_hue,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.hsl_luminosity,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.hsl_saturation,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.lighten,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.multiply,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.overlay,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.screen,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa.softlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.multiply,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.overlay,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.screen,Fail
-dEQP-GLES31.functional.blend_equation_advanced.coherent.softlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.colorburn,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.colordodge,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.darken,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.difference,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.exclusion,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_hue,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_luminosity,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_saturation,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.lighten,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.multiply,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.overlay,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.screen,Fail
-dEQP-GLES31.functional.blend_equation_advanced.msaa.softlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.colorburn,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.colordodge,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.darken,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.difference,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.exclusion,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.hardlight,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_color,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_hue,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_luminosity,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_saturation,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.lighten,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.multiply,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.overlay,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.screen,Fail
-dEQP-GLES31.functional.blend_equation_advanced.srgb.softlight,Fail
 dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_advanced_blend_eq_buffer_advanced_blend_eq,Fail
 dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_blend_eq_buffer_advanced_blend_eq,Fail
 dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_separate_blend_eq_buffer_advanced_blend_eq,Fail
@@ -113,47 +25,6 @@ dEQP-GLES31.functional.separate_shader.random.79,Fail
 dEQP-GLES31.functional.separate_shader.random.80,Fail
 dEQP-GLES31.functional.separate_shader.random.82,Fail
 dEQP-GLES31.functional.separate_shader.random.89,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.fragment_discard,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.framebuffer_texture_layer,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.framebuffer_texture_level,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.last_frag_data,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.multiple_assignment,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.texel_fetch,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r11f_g11f_b10f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r16f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r16i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r16ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r32f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r32i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r32ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r8,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r8ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg16f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg16i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg16ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg32f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg32i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg32ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg8,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg8i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rg8ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgb10_a2,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgb10_a2ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgb16f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgb565,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgb5_a1,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgb8,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba16f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba16i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba16ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba32f,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba32i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba32ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba4,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba8,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba8i,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.rgba8ui,Fail
-dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.srgb8_alpha8,Fail
 dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.21,Crash
 dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.36,Crash
 dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth24_stencil8.gather_size_npot,Fail
diff --git a/src/panfrost/bifrost/bi_schedule.c b/src/panfrost/bifrost/bi_schedule.c
index 4caf78547eb..9fca08c37f4 100644
--- a/src/panfrost/bifrost/bi_schedule.c
+++ b/src/panfrost/bifrost/bi_schedule.c
@@ -1947,7 +1947,8 @@ bi_lower_fau(bi_context *ctx)
         }
 }
 
-/* On v6, ATEST cannot be the first clause of a shader, add a NOP if needed */
+/* Only v7 allows specifying a dependency on the tilebuffer for the first
+ * clause of a shader. v6 requires adding a NOP clause with the depedency. */
 
 static void
 bi_add_nop_for_atest(bi_context *ctx)
@@ -1963,11 +1964,12 @@ bi_add_nop_for_atest(bi_context *ctx)
         pan_block *block = list_first_entry(&ctx->blocks, pan_block, link);
         bi_clause *clause = bi_next_clause(ctx, block, NULL);
 
-        if (!clause || clause->message_type != BIFROST_MESSAGE_ATEST)
+        if (!clause || !(clause->dependencies & ((1 << BIFROST_SLOT_ELDEST_DEPTH) |
+                                                 (1 << BIFROST_SLOT_ELDEST_COLOUR))))
                 return;
 
-        /* Add a NOP so we can wait for the dependencies required for ATEST to
-         * execute */
+        /* Add a NOP so we can wait for the dependencies required by the first
+         * clause */
 
         bi_instr *I = rzalloc(ctx, bi_instr);
         I->op = BI_OPCODE_NOP_I32;



More information about the mesa-commit mailing list