r600/sfn: Add simplified constructors for FS shader inputs.
authorGert Wollny <gert.wollny@collabora.com>
Sat, 21 Nov 2020 15:20:50 +0000 (16:20 +0100)
committerMarge Bot <eric+marge@anholt.net>
Fri, 27 Nov 2020 10:37:15 +0000 (10:37 +0000)
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7715>

src/gallium/drivers/r600/sfn/sfn_shaderio.cpp
src/gallium/drivers/r600/sfn/sfn_shaderio.h

index f32288e..429805d 100644 (file)
@@ -109,6 +109,30 @@ void ShaderInputSystemValue::set_specific_ioinfo(r600_shader_io& io) const
    io.ij_index = 0;
 }
 
+ShaderInputVarying::ShaderInputVarying(tgsi_semantic _name, int sid, unsigned driver_location,
+                                       unsigned frac, unsigned components,
+                                       tgsi_interpolate_mode interpolate,
+                                       tgsi_interpolate_loc interp_loc):
+   ShaderInput(_name),
+   m_driver_location(driver_location),
+   m_location_frac(frac),
+   m_sid(sid),
+   m_interpolate(interpolate),
+   m_interpolate_loc(interp_loc),
+   m_ij_index(-10),
+   m_mask((1 << components) - 1)
+{
+   evaluate_spi_sid();
+
+   m_ij_index = interpolate == TGSI_INTERPOLATE_LINEAR ? 3 : 0;
+   switch (interp_loc) {
+   case TGSI_INTERPOLATE_LOC_CENTROID: m_ij_index += 2; break;
+   case TGSI_INTERPOLATE_LOC_CENTER: m_ij_index += 1; break;
+   default:
+      ;
+   }
+}
+
 ShaderInputVarying::ShaderInputVarying(tgsi_semantic _name, int sid, nir_variable *input):
    ShaderInput(_name),
    m_driver_location(input->data.driver_location),
@@ -263,6 +287,15 @@ ShaderInputColor::ShaderInputColor(tgsi_semantic name, int sid, nir_variable *in
    sfn_log << SfnLog::io << __func__ << "name << " << name << " sid << " << sid << "\n";
 }
 
+ShaderInputColor::ShaderInputColor(tgsi_semantic _name, int sid, unsigned driver_location,
+                                   unsigned frac, unsigned components, tgsi_interpolate_mode interpolate,
+                                   tgsi_interpolate_loc interp_loc):
+   ShaderInputVarying(_name, sid, driver_location,frac, components, interpolate, interp_loc),
+   m_back_color_input_idx(0)
+{
+   sfn_log << SfnLog::io << __func__ << "name << " << _name << " sid << " << sid << "\n";
+}
+
 void ShaderInputColor::set_back_color(unsigned back_color_input_idx)
 {
    sfn_log << SfnLog::io << "Set back color index " << back_color_input_idx << "\n";
index e77c44c..0e20c67 100644 (file)
@@ -76,6 +76,9 @@ public:
 
 class ShaderInputVarying : public ShaderInput {
 public:
+   ShaderInputVarying(tgsi_semantic _name, int sid, unsigned driver_location,
+                      unsigned frac, unsigned components, tgsi_interpolate_mode interpolate,
+                      tgsi_interpolate_loc interp_loc);
    ShaderInputVarying(tgsi_semantic name, int sid, nir_variable *input);
    ShaderInputVarying(tgsi_semantic name, const ShaderInputVarying& orig,
                       size_t location);
@@ -115,6 +118,9 @@ private:
 
 class ShaderInputColor: public ShaderInputVarying {
 public:
+   ShaderInputColor(tgsi_semantic _name, int sid, unsigned driver_location,
+                    unsigned frac, unsigned components, tgsi_interpolate_mode interpolate,
+                    tgsi_interpolate_loc interp_loc);
    ShaderInputColor(tgsi_semantic name, int sid, nir_variable *input);
    void set_back_color(unsigned back_color_input_idx);
    unsigned back_color_input_index() const {