Mesa (master): nir/lower_clip: Add i/o semantics for load/store intrinsics.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Sep 28 17:50:57 UTC 2020


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

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Sep  1 12:54:25 2020 -0700

nir/lower_clip: Add i/o semantics for load/store intrinsics.

ir3 looks at the .location on its inputs for handling
non-VARYING_SLOT_POS, but our uninitialized semantics matched that and
threw a compiler assertion failure.

Fixes: 502abfce7f5d ("nir: save IO semantics in lowered IO intrinsics")
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6716>

---

 .gitlab-ci/traces-freedreno.yml   |  9 ++++-----
 src/compiler/nir/nir_lower_clip.c | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/.gitlab-ci/traces-freedreno.yml b/.gitlab-ci/traces-freedreno.yml
index 886307863dc..2bc3281b5bf 100644
--- a/.gitlab-ci/traces-freedreno.yml
+++ b/.gitlab-ci/traces-freedreno.yml
@@ -233,11 +233,10 @@ traces:
 #    expectations:
 #      - device: freedreno-a630
 #        checksum: 0
-# Fails due to clipdistance lowering not setting i/o semantics.
-#  - path: neverball/neverball.trace
-#    expectations:
-#      - device: freedreno-a630
-#        checksum: 0
+  - path: neverball/neverball.trace
+    expectations:
+      - device: freedreno-a630
+        checksum: e67cdf15590f1729201eb82393f5513e
   - path: pathfinder/canvas_moire.trace
     expectations:
       - device: freedreno-a630
diff --git a/src/compiler/nir/nir_lower_clip.c b/src/compiler/nir/nir_lower_clip.c
index 6e8010cf78b..bbd4ce0ff3e 100644
--- a/src/compiler/nir/nir_lower_clip.c
+++ b/src/compiler/nir/nir_lower_clip.c
@@ -100,6 +100,13 @@ store_clipdist_output(nir_builder *b, nir_variable *out, nir_ssa_def **val)
    store->num_components = 4;
    nir_intrinsic_set_base(store, out->data.driver_location);
    nir_intrinsic_set_write_mask(store, 0xf);
+
+   nir_io_semantics semantics = {
+      .location = out->data.location,
+      .num_slots = 1,
+   };
+   nir_intrinsic_set_io_semantics(store, semantics);
+
    store->src[0].ssa = nir_vec4(b, val[0], val[1], val[2], val[3]);
    store->src[0].is_ssa = true;
    store->src[1] = nir_src_for_ssa(nir_imm_int(b, 0));
@@ -115,6 +122,13 @@ load_clipdist_input(nir_builder *b, nir_variable *in, int location_offset,
    load = nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_input);
    load->num_components = 4;
    nir_intrinsic_set_base(load, in->data.driver_location + location_offset);
+
+   nir_io_semantics semantics = {
+      .location = in->data.location,
+      .num_slots = 1,
+   };
+   nir_intrinsic_set_io_semantics(load, semantics);
+
    load->src[0] = nir_src_for_ssa(nir_imm_int(b, 0));
    nir_ssa_dest_init(&load->instr, &load->dest, 4, 32, NULL);
    nir_builder_instr_insert(b, &load->instr);



More information about the mesa-commit mailing list