From 9db5536643acff1dac81bbd3cae97a66228b0947 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Wed, 6 May 2020 23:54:38 +0200 Subject: [PATCH] r600/sfn: Make allocate_reserved_registers forward to a virtual function Signed-off-by: Gert Wollny Reviewed-by: Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/r600/sfn/sfn_shader_base.cpp | 6 ++++++ src/gallium/drivers/r600/sfn/sfn_shader_base.h | 4 +++- src/gallium/drivers/r600/sfn/sfn_shader_compute.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_compute.h | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_fragment.h | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_geometry.h | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_tcs.h | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.h | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_vertex.h | 2 +- 14 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp index 3354e712876..57053efc49a 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp @@ -102,6 +102,12 @@ enum chip_class ShaderFromNirProcessor::get_chip_class(void) const return m_chip_class; } +bool ShaderFromNirProcessor::allocate_reserved_registers() +{ + bool retval = do_allocate_reserved_registers(); + return retval; +} + static void remap_shader_info(r600_shader& sh_info, std::vector& map, UNUSED ValueMap& values) diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_base.h b/src/gallium/drivers/r600/sfn/sfn_shader_base.h index 4d799bf8f6e..d284efc3f07 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_base.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_base.h @@ -130,8 +130,10 @@ protected: std::bitset m_sv_values; + bool allocate_reserved_registers(); + private: - virtual bool allocate_reserved_registers() = 0; + virtual bool do_allocate_reserved_registers() = 0; bool emit_alu_instruction(nir_instr *instr); bool emit_deref_instruction(nir_deref_instr* instr); diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_compute.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_compute.cpp index e832b8a2b06..2351a7fc50b 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_compute.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_compute.cpp @@ -43,7 +43,7 @@ bool ComputeShaderFromNir::scan_sysvalue_access(UNUSED nir_instr *instr) { return true; } -bool ComputeShaderFromNir::allocate_reserved_registers() +bool ComputeShaderFromNir::do_allocate_reserved_registers() { int thread_id_sel = m_reserved_registers++; int wg_id_sel = m_reserved_registers++; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_compute.h b/src/gallium/drivers/r600/sfn/sfn_shader_compute.h index bd6e792635f..b6a1813e52b 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_compute.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_compute.h @@ -46,7 +46,7 @@ public: private: bool emit_intrinsic_instruction_override(nir_intrinsic_instr* instr) override; - bool allocate_reserved_registers() override; + bool do_allocate_reserved_registers() override; bool do_process_inputs(nir_variable *input) override; bool do_process_outputs(nir_variable *output) override; bool do_emit_load_deref(const nir_variable *in_var, nir_intrinsic_instr* instr) override; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp index eb37721d8c5..c4084553f16 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp @@ -137,7 +137,7 @@ bool FragmentShaderFromNir::scan_sysvalue_access(nir_instr *instr) return true; } -bool FragmentShaderFromNir::allocate_reserved_registers() +bool FragmentShaderFromNir::do_allocate_reserved_registers() { assert(!m_reserved_registers); diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h index fbf91708a4b..57d6cf7ec9a 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_fragment.h @@ -50,7 +50,7 @@ private: void emit_shader_start() override; bool do_process_inputs(nir_variable *input) override; - bool allocate_reserved_registers() override; + bool do_allocate_reserved_registers() override; bool do_process_outputs(nir_variable *output) override; bool do_emit_load_deref(const nir_variable *in_var, nir_intrinsic_instr* instr) override; bool do_emit_store_deref(const nir_variable *out_var, nir_intrinsic_instr* instr) override; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp index 48f02780ab2..2edc86ff361 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp @@ -143,7 +143,7 @@ bool GeometryShaderFromNir::do_process_outputs(nir_variable *output) } -bool GeometryShaderFromNir::allocate_reserved_registers() +bool GeometryShaderFromNir::do_allocate_reserved_registers() { const int sel[6] = {0, 0 ,0, 1, 1, 1}; const int chan[6] = {0, 1 ,3, 0, 1, 2}; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_geometry.h b/src/gallium/drivers/r600/sfn/sfn_shader_geometry.h index cbecc1b20c8..08df47e559f 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_geometry.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_geometry.h @@ -48,7 +48,7 @@ private: }; bool do_process_inputs(nir_variable *input) override; - bool allocate_reserved_registers() override; + bool do_allocate_reserved_registers() override; bool do_process_outputs(nir_variable *output) override; bool emit_deref_instruction_override(nir_deref_instr* instr) override; bool emit_intrinsic_instruction_override(nir_intrinsic_instr* instr) override; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp index 866396badde..78a97b32025 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp @@ -56,7 +56,7 @@ bool TcsShaderFromNir::do_process_outputs(nir_variable *output) return true; } -bool TcsShaderFromNir::allocate_reserved_registers() +bool TcsShaderFromNir::do_allocate_reserved_registers() { if (m_sv_values.test(es_primitive_id)) { m_reserved_registers = 1; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_tcs.h b/src/gallium/drivers/r600/sfn/sfn_shader_tcs.h index 06267d7a1b2..ba914a75373 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_tcs.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_tcs.h @@ -12,7 +12,7 @@ public: bool scan_sysvalue_access(nir_instr *instr) override; private: - bool allocate_reserved_registers() override; + bool do_allocate_reserved_registers() override; bool emit_intrinsic_instruction_override(nir_intrinsic_instr* instr) override; bool store_tess_factor(nir_intrinsic_instr* instr); diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.cpp index 351c32ffda5..e8616fcb2b8 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.cpp @@ -66,7 +66,7 @@ bool TEvalShaderFromNir::scan_sysvalue_access(nir_instr *instr) return true; } -bool TEvalShaderFromNir::allocate_reserved_registers() +bool TEvalShaderFromNir::do_allocate_reserved_registers() { if (m_sv_values.test(es_tess_coord)) { m_reserved_registers = 1; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.h b/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.h index a9086a3268f..a33dbfa6f76 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.h @@ -15,7 +15,7 @@ public: bool scan_sysvalue_access(nir_instr *instr) override; PValue primitive_id() override {return m_primitive_id;} private: - bool allocate_reserved_registers() override; + bool do_allocate_reserved_registers() override; bool emit_intrinsic_instruction_override(nir_intrinsic_instr* instr) override; bool emit_load_tess_coord(nir_intrinsic_instr* instr); bool load_tess_z_coord(nir_intrinsic_instr* instr); diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp index f6cdc648318..c3cd020b4dc 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp @@ -83,7 +83,7 @@ bool VertexShaderFromNir::do_process_inputs(nir_variable *input) return false; } -bool VertexShaderFromNir::allocate_reserved_registers() +bool VertexShaderFromNir::do_allocate_reserved_registers() { /* Since the vertex ID is nearly always used, we add it here as an input so * that the registers used for vertex attributes don't get clobbered by the diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_vertex.h b/src/gallium/drivers/r600/sfn/sfn_shader_vertex.h index 4135cf1e3cd..4998a25f6b2 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_vertex.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader_vertex.h @@ -61,7 +61,7 @@ private: void emit_shader_start() override; bool do_process_inputs(nir_variable *input) override; - bool allocate_reserved_registers() override; + bool do_allocate_reserved_registers() override; bool do_process_outputs(nir_variable *output) override; bool emit_intrinsic_instruction_override(nir_intrinsic_instr* instr) override; bool emit_store_local_shared(nir_intrinsic_instr* instr); -- 2.30.2