Mesa (master): r600/sfn: use shared pointer to GPR for FS sysvalues

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 16 12:09:06 UTC 2020


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

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Tue Oct  6 20:21:23 2020 +0200

r600/sfn: use shared pointer to GPR for FS sysvalues

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

---

 src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp | 18 +++++++-----------
 src/gallium/drivers/r600/sfn/sfn_shader_fragment.h   |  8 ++++----
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp
index 2c052ec8439..a8ae6e6b3c9 100644
--- a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp
@@ -210,11 +210,10 @@ bool FragmentShaderFromNir::do_allocate_reserved_registers()
    // handle system values
    if (m_sv_values.test(es_face) || m_need_back_color) {
       face_reg_index = m_reserved_registers++;
-      auto ffr = new GPRValue(face_reg_index,0);
-      ffr->set_as_input();
-      m_front_face_reg.reset(ffr);
+      m_front_face_reg = std::make_shared<GPRValue>(face_reg_index,0);
+      m_front_face_reg->set_as_input();
       sfn_log << SfnLog::io << "Set front_face register to " <<  *m_front_face_reg << "\n";
-      inject_register(ffr->sel(), ffr->chan(), m_front_face_reg, false);
+      inject_register(m_front_face_reg->sel(), m_front_face_reg->chan(), m_front_face_reg, false);
 
       m_shaderio.add_input(new ShaderInputSystemValue(TGSI_SEMANTIC_FACE, face_reg_index));
       load_front_face();
@@ -224,11 +223,9 @@ bool FragmentShaderFromNir::do_allocate_reserved_registers()
       if (face_reg_index < 0)
          face_reg_index = m_reserved_registers++;
 
-      auto smi = new GPRValue(face_reg_index,2);
-      smi->set_as_input();
-      m_sample_mask_reg.reset(smi);
+      m_sample_mask_reg = std::make_shared<GPRValue>(face_reg_index,2);
+      m_sample_mask_reg->set_as_input();
       sfn_log << SfnLog::io << "Set sample mask in register to " <<  *m_sample_mask_reg << "\n";
-      //inject_register(smi->sel(), smi->chan(), m_sample_mask_reg, false);
       sh_info().nsys_inputs = 1;
       m_shaderio.add_input(new ShaderInputSystemValue(TGSI_SEMANTIC_SAMPLEMASK, face_reg_index));
    }
@@ -238,9 +235,8 @@ bool FragmentShaderFromNir::do_allocate_reserved_registers()
       if (sample_id_index < 0)
          sample_id_index = m_reserved_registers++;
 
-      auto smi = new GPRValue(sample_id_index, 3);
-      smi->set_as_input();
-      m_sample_id_reg.reset(smi);
+      m_sample_id_reg = std::make_shared<GPRValue>(sample_id_index, 3);
+      m_sample_id_reg->set_as_input();
       sfn_log << SfnLog::io << "Set sample id register to " <<  *m_sample_id_reg << "\n";
       sh_info().nsys_inputs++;
       m_shaderio.add_input(new ShaderInputSystemValue(TGSI_SEMANTIC_SAMPLEID, sample_id_index));
diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h
index 1a6546db42d..f6dedffa4a9 100644
--- a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h
+++ b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h
@@ -85,10 +85,10 @@ private:
    std::array<Interpolator, 6> m_interpolator;
    unsigned m_reserved_registers;
    unsigned m_frag_pos_index;
-   PValue m_front_face_reg;
-   PValue m_sample_mask_reg;
-   PValue m_sample_id_reg;
-   PValue m_helper_invocation;
+   PGPRValue m_front_face_reg;
+   PGPRValue m_sample_mask_reg;
+   PGPRValue m_sample_id_reg;
+   PGPRValue m_helper_invocation;
    GPRVector m_frag_pos;
    bool m_need_back_color;
    bool m_front_face_loaded;



More information about the mesa-commit mailing list