Mesa (master): freedreno: Don't lower indirects in GLSL IR

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Apr 26 17:31:21 UTC 2021


Module: Mesa
Branch: master
Commit: a07ab4f9142e8154ae140d8a5c755b0eb413f304
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a07ab4f9142e8154ae140d8a5c755b0eb413f304

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Thu Oct 22 15:26:21 2020 +0200

freedreno: Don't lower indirects in GLSL IR

nir_lower_io_to_temporaries should generate better code.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7274>

---

 .../freedreno/ci/piglit-freedreno-a630-fails.txt   | 31 ++--------------------
 .../freedreno/ci/piglit-freedreno-a630-skips.txt   |  1 +
 src/gallium/drivers/freedreno/freedreno_screen.c   |  9 -------
 3 files changed, 3 insertions(+), 38 deletions(-)

diff --git a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt
index f8bcfae23f7..ebc0ece5d8b 100644
--- a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt
+++ b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt
@@ -457,9 +457,6 @@ spec at arb_arrays_of_arrays@execution at image_store@basic-imagestore-non-const-unifo
 spec at arb_arrays_of_arrays@execution at sampler@fs-struct-const-index-sampler-const-index,Crash
 spec at arb_compute_shader@execution at border-color,Fail
 spec at arb_shader_storage_buffer_object@linker at instance-matching-shader-storage-blocks-member-array-size-mismatch,Fail
-spec at arb_tessellation_shader@execution at 16in-1out,Crash
-spec at arb_tessellation_shader@execution at 1in-1out,Crash
-spec at arb_tessellation_shader@execution at barrier-patch,Crash
 spec at arb_tessellation_shader@execution at fs-primitiveid-instanced,Fail
 spec at arb_tessellation_shader@execution at gs-primitiveid-instanced,Fail
 spec at arb_tessellation_shader@execution at invocation-counting-even,Fail
@@ -478,43 +475,19 @@ spec at arb_tessellation_shader@execution at variable-indexing@tcs-input-array-float-i
 spec at arb_tessellation_shader@execution at variable-indexing@tcs-input-array-vec2-index-rd,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tcs-input-array-vec3-index-rd,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tcs-input-array-vec4-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-float-index-rd-after-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-float-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-float-index-wr-before-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec2-index-rd-after-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec2-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec2-index-wr-before-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec3-index-rd-after-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec3-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec3-index-wr-before-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec4-index-rd-after-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec4-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-output-array-vec4-index-wr-before-barrier,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-patch-output-array-float-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-patch-output-array-vec2-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-patch-output-array-vec3-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tcs-patch-output-array-vec4-index-wr,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tcs-patch-vec4-index-wr,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tcs-patch-vec4-swiz-index-wr,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-both-input-array-float-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-both-input-array-vec2-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-both-input-array-vec3-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-both-input-array-vec4-index-rd,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tes-input-array-float-index-rd,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tes-input-array-vec2-index-rd,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tes-input-array-vec3-index-rd,Crash
 spec at arb_tessellation_shader@execution at variable-indexing@tes-input-array-vec4-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-patch-input-array-float-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-patch-input-array-vec2-index-invalid-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-patch-input-array-vec2-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-patch-input-array-vec3-index-rd,Crash
-spec at arb_tessellation_shader@execution at variable-indexing@tes-patch-input-array-vec4-index-rd,Crash
+spec at arb_tessellation_shader@execution at variable-indexing@vs-output-array-vec3-index-wr-before-tcs,Fail
+spec at arb_tessellation_shader@execution at variable-indexing@vs-output-array-vec4-index-wr-before-tcs,Fail
 spec at arb_tessellation_shader@execution at vertex-partial-write,Crash
 spec at arb_tessellation_shader@execution at vs-tes-max-in-out-components,Fail
 spec at arb_tessellation_shader@execution at vs-tes-tessinner-tessouter-inputs-quads,Fail
 spec at arb_tessellation_shader@execution at vs-tes-tessinner-tessouter-inputs-tris,Fail
 spec at arb_tessellation_shader@execution at vs-tes-vertex,Fail
-spec at glsl-1.10@execution at vsfs-unused-array-member,Crash
 spec at glsl-1.30@execution at fs-large-local-array-vec2,Crash
 spec at glsl-1.30@execution at fs-large-local-array-vec3,Crash
 spec at glsl-1.30@execution at fs-large-local-array-vec4,Crash
diff --git a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-skips.txt b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-skips.txt
index 65e0672e97b..4c94bb0a4b0 100644
--- a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-skips.txt
+++ b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-skips.txt
@@ -1,5 +1,6 @@
 # Can wedge the GPU
 vs-output-array-vec2-index-wr-before-gs
+gs-input-array-vec4-index-rd
 
 # These take most of a minute to run
 spec@!opengl 3.0 at clearbuffer-depth-cs-probe
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
index b1845766f46..e2d22e07fd5 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -613,15 +613,6 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen,
       return 1;
    case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
    case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
-      /* Technically this should be the same as for TEMP/CONST, since
-       * everything is just normal registers.  This is just temporary
-       * hack until load_input/store_output handle arrays in a similar
-       * way as load_var/store_var..
-       *
-       * For tessellation stages, inputs are loaded using ldlw or ldg, both
-       * of which support indirection.
-       */
-      return shader == PIPE_SHADER_TESS_CTRL || shader == PIPE_SHADER_TESS_EVAL;
    case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
    case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
       /* a2xx compiler doesn't handle indirect: */



More information about the mesa-commit mailing list