Mesa (staging/22.0): intel/compiler: ignore per-primitive attrs when calculating flat input mask

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Mar 3 18:55:36 UTC 2022


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

Author: Marcin Ślusarz <marcin.slusarz at intel.com>
Date:   Thu Feb 24 17:06:33 2022 +0100

intel/compiler: ignore per-primitive attrs when calculating flat input mask

If we say that per-primitive attributes are flat (which is communicated by
3DSTATE_SBE.ConstantInterpolationEnable), GPU freaks out and applies it
to other (non-flat) attributes.

Fixes: be89ea3231c ("intel/compiler: Handle per-primitive inputs in FS")

Reviewed-by: Caio Oliveira <caio.oliveira at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15169>
(cherry picked from commit e2cb562dd1bd79f0e4b1b2597cfb0fa6b5f8c22a)

---

 .pick_status.json             | 2 +-
 src/intel/compiler/brw_fs.cpp | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index 7093327d9ed..51e56c88d73 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1318,7 +1318,7 @@
         "description": "intel/compiler: ignore per-primitive attrs when calculating flat input mask",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "be89ea3231c92960cf9b23b37ce6402e4612a207"
     },
diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index e446d04ac4e..b3ef0089c1e 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -9397,6 +9397,9 @@ brw_compute_flat_inputs(struct brw_wm_prog_data *prog_data,
    prog_data->flat_inputs = 0;
 
    nir_foreach_shader_in_variable(var, shader) {
+      if (var->data.per_primitive)
+         continue;
+
       unsigned slots = glsl_count_attribute_slots(var->type, false);
       for (unsigned s = 0; s < slots; s++) {
          int input_index = prog_data->urb_setup[var->data.location + s];



More information about the mesa-commit mailing list