From 4c46bde315d7066f4fb2c72da8742463347455d6 Mon Sep 17 00:00:00 2001 From: Vincent Lejeune Date: Thu, 28 Jul 2016 23:20:39 +0200 Subject: [PATCH] rsx: Inline rsx_state and texture constructors. --- rpcs3/Emu/RSX/RSXTexture.cpp | 10 --------- rpcs3/Emu/RSX/RSXTexture.h | 4 ++-- rpcs3/Emu/RSX/rsx_methods.cpp | 35 -------------------------------- rpcs3/Emu/RSX/rsx_methods.h | 38 ++++++++++++++++++++++++++++++----- 4 files changed, 35 insertions(+), 52 deletions(-) diff --git a/rpcs3/Emu/RSX/RSXTexture.cpp b/rpcs3/Emu/RSX/RSXTexture.cpp index 77843af698..72461f4174 100644 --- a/rpcs3/Emu/RSX/RSXTexture.cpp +++ b/rpcs3/Emu/RSX/RSXTexture.cpp @@ -6,11 +6,6 @@ namespace rsx { - texture::texture(u8 idx, std::array &r) : m_index(idx), registers(r) - { - - } - void texture::init() { // Offset @@ -248,11 +243,6 @@ namespace rsx return registers[NV4097_SET_TEXTURE_CONTROL3 + m_index] & 0xfffff; } - vertex_texture::vertex_texture(u8 idx, std::array &r) : m_index(idx), registers(r) - { - - } - void vertex_texture::init() { // Offset diff --git a/rpcs3/Emu/RSX/RSXTexture.h b/rpcs3/Emu/RSX/RSXTexture.h index cb1f15e149..fa932272a4 100644 --- a/rpcs3/Emu/RSX/RSXTexture.h +++ b/rpcs3/Emu/RSX/RSXTexture.h @@ -21,7 +21,7 @@ namespace rsx std::array ®isters; public: - texture(u8 idx, std::array &r); + texture(u8 idx, std::array &r) : m_index(idx), registers(r) { } texture() = delete; //initialize texture registers with default values @@ -97,7 +97,7 @@ namespace rsx std::array ®isters; public: - vertex_texture(u8 idx, std::array &r); + vertex_texture(u8 idx, std::array &r) : m_index(idx), registers(r) { } vertex_texture() = delete; //initialize texture registers with default values diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index bfb41544bc..3d1425e999 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -780,41 +780,6 @@ namespace rsx } } - template - std::array fill_array(Args&& arg, std::index_sequence seq) - { - return{ T(N, std::forward(arg))... }; - } - - rsx_state & rsx_state::operator=(const rsx_state & in) - { - registers = in.registers; - transform_program = in.transform_program; - transform_constants = in.transform_constants; - register_vertex_info = in.register_vertex_info; - for (int i = 0; i < 16; i++) - { - vertex_arrays_info[i].size = in.vertex_arrays_info[i].size; - vertex_arrays_info[i].stride = in.vertex_arrays_info[i].stride; - vertex_arrays_info[i].frequency = in.vertex_arrays_info[i].frequency; - vertex_arrays_info[i].type = in.vertex_arrays_info[i].type; - } - return *this; - } - - rsx_state::rsx_state() : - fragment_textures(fill_array(registers, std::make_index_sequence<16>())), - vertex_textures(fill_array(registers, std::make_index_sequence<4>())), - vertex_arrays_info(fill_array(registers, std::make_index_sequence<16>())) - { - - } - - rsx_state::~rsx_state() - { - - } - void rsx_state::reset() { //setup method registers diff --git a/rpcs3/Emu/RSX/rsx_methods.h b/rpcs3/Emu/RSX/rsx_methods.h index 4ef9d34793..5e7e1d71d8 100644 --- a/rpcs3/Emu/RSX/rsx_methods.h +++ b/rpcs3/Emu/RSX/rsx_methods.h @@ -75,9 +75,18 @@ namespace rsx } }; + namespace + { + template + std::array fill_array(Args&& arg, std::index_sequence seq) + { + return{ T(N, std::forward(arg))... }; + } + } + struct rsx_state { - private: + protected: std::array registers; template @@ -91,7 +100,21 @@ namespace rsx } public: - rsx_state &operator=(const rsx_state& in); + rsx_state &operator=(const rsx_state& in) + { + registers = in.registers; + transform_program = in.transform_program; + transform_constants = in.transform_constants; + register_vertex_info = in.register_vertex_info; + for (int i = 0; i < 16; i++) + { + vertex_arrays_info[i].size = in.vertex_arrays_info[i].size; + vertex_arrays_info[i].stride = in.vertex_arrays_info[i].stride; + vertex_arrays_info[i].frequency = in.vertex_arrays_info[i].frequency; + vertex_arrays_info[i].type = in.vertex_arrays_info[i].type; + } + return *this; + } std::array fragment_textures; std::array vertex_textures; @@ -119,8 +142,13 @@ namespace rsx std::array register_vertex_info; std::array vertex_arrays_info; - rsx_state(); - ~rsx_state(); + rsx_state() : + fragment_textures(fill_array(registers, std::make_index_sequence<16>())), + vertex_textures(fill_array(registers, std::make_index_sequence<4>())), + vertex_arrays_info(fill_array(registers, std::make_index_sequence<16>())) + { } + + ~rsx_state() { } void decode(u32 reg, u32 value); @@ -600,7 +628,7 @@ namespace rsx return decode().alpha_ref(); } - surface_target surface_color_target() + surface_target surface_color_target() const { return decode().target(); }