Mesa (master): nir: Lower interp_var_at_* like a normal load_var for flat inputs.

Kenneth Graunke kwg at kemper.freedesktop.org
Sat Jul 23 03:33:25 UTC 2016


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Jul 21 17:42:01 2016 -0700

nir: Lower interp_var_at_* like a normal load_var for flat inputs.

"flat centroid" and "flat sample" both just mean "flat", so we should
ignore interpolateAtCentroid/Sample and just return the flat value.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97032
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/compiler/nir/nir_lower_io.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c
index bf8296f..b36836f 100644
--- a/src/compiler/nir/nir_lower_io.c
+++ b/src/compiler/nir/nir_lower_io.c
@@ -340,6 +340,10 @@ lower_interpolate_at(nir_intrinsic_instr *intrin, struct lower_io_state *state,
 
    assert(var->data.mode == nir_var_shader_in);
 
+   /* Ignore interpolateAt() for flat variables - flat is flat. */
+   if (var->data.interpolation == INTERP_MODE_FLAT)
+      return lower_load(intrin, state, NULL, offset);
+
    nir_intrinsic_op bary_op;
    switch (intrin->intrinsic) {
    case nir_intrinsic_interp_var_at_centroid:




More information about the mesa-commit mailing list