Mesa (staging/20.1): nir: only uniforms with dynamically_uniform offset are dynamically_uniform

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 23 22:48:29 UTC 2020


Module: Mesa
Branch: staging/20.1
Commit: b5f519100b0717837070c66521cd01147addf32f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b5f519100b0717837070c66521cd01147addf32f

Author: Jose Maria Casanova Crespo <jmcasanova at igalia.com>
Date:   Wed Jun 17 02:30:23 2020 +0200

nir: only uniforms with dynamically_uniform offset are dynamically_uniform

Previously all nir_intrinsic_load_uniform that were used as sources were
considered to be dynamically_uniform but when offsets of load_uniform
are indirect it can not be determined.

This fixes artefacts in Google Maps 3D view in V3D.

Fixes: 886d46b08971 ("nir: Add a function to determine if a source is dynamically uniform")
Reviewed-by: Neil Roberts <nroberts at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5587>
(cherry picked from commit ba15bb383f0756703e05bf202edc4771a1c54560)

---

 .pick_status.json      | 2 +-
 src/compiler/nir/nir.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 880be180e33..f0972e423bd 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -94,7 +94,7 @@
         "description": "nir: only uniforms with dynamically_uniform offset are dynamically_uniform",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "886d46b0897182e489e03f7302a575b54004faca"
     },
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index e3569d1f80b..fa908b281f4 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -1323,8 +1323,8 @@ nir_src_is_dynamically_uniform(nir_src src)
    /* As are uniform variables */
    if (src.ssa->parent_instr->type == nir_instr_type_intrinsic) {
       nir_intrinsic_instr *intr = nir_instr_as_intrinsic(src.ssa->parent_instr);
-
-      if (intr->intrinsic == nir_intrinsic_load_uniform)
+      if (intr->intrinsic == nir_intrinsic_load_uniform &&
+          nir_src_is_dynamically_uniform(intr->src[0]))
          return true;
    }
 



More information about the mesa-commit mailing list