r600/sfn: Fix enabling the right interpolator for inerpolate_at_sample
Fixes: 73c5f451916
r600/sfn: Fix interpolate at sample
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6925>
diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp
index a75cf0f..2c052ec 100644
--- a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp
@@ -170,10 +170,8 @@
m_interpolator[5].enabled = true; /* linear */
}
- if (m_enable_sample_interpolators) {
- m_interpolator[0].enabled = true; /* perspective */
- m_interpolator[3].enabled = true; /* linear */
- }
+ if (m_enable_sample_interpolators)
+ m_interpolator[1].enabled = true; /* perspective */
// sort the varying inputs
m_shaderio.sort_varying_inputs();
@@ -467,8 +465,7 @@
auto& io = m_shaderio.input(var->data.driver_location, var->data.location_frac);
- int ij_index = io.ij_index() >= 3 ? 3 : 0;
- auto interpolator = m_interpolator[ij_index];
+ auto interpolator = m_interpolator[1];
assert(interpolator.enabled);
PValue dummy(new GPRValue(interpolator.i->sel(), 0));
@@ -607,7 +604,9 @@
auto dst = vec_from_nir(instr->dest, 4);
sfn_log << SfnLog::io << "Set input[" << in_var->data.driver_location
- << "].gpr=" << dst.sel() << "\n";
+ << "].gpr=" << dst.sel()
+ << " interp=" << io.ij_index()
+ << "\n";
io.set_gpr(dst.sel());