diff --git a/plugins/GSdx/GSRendererDX.cpp b/plugins/GSdx/GSRendererDX.cpp index 1088d927c3..2f6646cd3a 100644 --- a/plugins/GSdx/GSRendererDX.cpp +++ b/plugins/GSdx/GSRendererDX.cpp @@ -33,17 +33,12 @@ GSRendererDX::GSRendererDX(GSTextureCache* tc, const GSVector2& pixelcenter) if (theApp.GetConfigB("UserHacks")) { UserHacks_AlphaHack = theApp.GetConfigB("UserHacks_AlphaHack"); UserHacks_AlphaStencil = theApp.GetConfigB("UserHacks_AlphaStencil"); - UserHacks_TCOffset = theApp.GetConfigI("UserHacks_TCOffset"); UserHacks_HPO = theApp.GetConfigI("UserHacks_HalfPixelOffset"); } else { UserHacks_AlphaHack = false; UserHacks_AlphaStencil = false; - UserHacks_TCOffset = 0; UserHacks_HPO = 0; } - - UserHacks_TCO_x = (UserHacks_TCOffset & 0xFFFF) / -1000.0f; - UserHacks_TCO_y = ((UserHacks_TCOffset >> 16) & 0xFFFF) / -1000.0f; } GSRendererDX::~GSRendererDX() @@ -320,8 +315,8 @@ void GSRendererDX::EmulateTextureSampler(const GSTextureCache::Source* tex) } // TC Offset Hack - m_ps_sel.tcoffsethack = !!UserHacks_TCOffset; - ps_cb.TC_OffsetHack = GSVector4(UserHacks_TCO_x, UserHacks_TCO_y).xyxy() / WH.xyxy(); + m_ps_sel.tcoffsethack = !!m_userhacks_tcoffset; + ps_cb.TC_OffsetHack = GSVector4(m_userhacks_tcoffset_x, m_userhacks_tcoffset_y).xyxy() / WH.xyxy(); // Only enable clamping in CLAMP mode. REGION_CLAMP will be done manually in the shader m_ps_ssel.tau = (wms != CLAMP_CLAMP); diff --git a/plugins/GSdx/GSRendererDX.h b/plugins/GSdx/GSRendererDX.h index 4d901760e5..54ac208152 100644 --- a/plugins/GSdx/GSRendererDX.h +++ b/plugins/GSdx/GSRendererDX.h @@ -44,8 +44,6 @@ protected: virtual void SetupIA(const float& sx, const float& sy) = 0; virtual void UpdateFBA(GSTexture* rt) {} - unsigned int UserHacks_TCOffset; - float UserHacks_TCO_x, UserHacks_TCO_y; int UserHacks_HPO; bool DATE; diff --git a/plugins/GSdx/GSRendererHW.cpp b/plugins/GSdx/GSRendererHW.cpp index 6be21b25aa..954dabc5d5 100644 --- a/plugins/GSdx/GSRendererHW.cpp +++ b/plugins/GSdx/GSRendererHW.cpp @@ -30,6 +30,9 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc) , m_reset(false) , m_upscale_multiplier(1) , m_tc(tc) + , m_userhacks_tcoffset(0) + , m_userhacks_tcoffset_x(0) + , m_userhacks_tcoffset_y(0) , m_channel_shuffle(false) , m_lod(GSVector2i(0,0)) { @@ -42,6 +45,9 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc) m_userhacks_disable_gs_mem_clear = theApp.GetConfigB("UserHacks_DisableGsMemClear"); m_userHacks_HPO = theApp.GetConfigI("UserHacks_HalfPixelOffset"); m_userHacks_merge_sprite = theApp.GetConfigB("UserHacks_merge_pp_sprite"); + m_userhacks_tcoffset = theApp.GetConfigI("UserHacks_TCOffset"); + m_userhacks_tcoffset_x = (m_userhacks_tcoffset & 0xFFFF) / -1000.0f; + m_userhacks_tcoffset_y = ((m_userhacks_tcoffset >> 16) & 0xFFFF) / -1000.0f; } else { m_userhacks_align_sprite_X = false; m_userhacks_round_sprite_offset = 0; diff --git a/plugins/GSdx/GSRendererHW.h b/plugins/GSdx/GSRendererHW.h index 576e35054c..6d8bf29bd1 100644 --- a/plugins/GSdx/GSRendererHW.h +++ b/plugins/GSdx/GSRendererHW.h @@ -150,6 +150,10 @@ protected: int m_userhacks_round_sprite_offset; int m_userHacks_HPO; + unsigned int m_userhacks_tcoffset; + float m_userhacks_tcoffset_x; + float m_userhacks_tcoffset_y; + bool m_channel_shuffle; GSVector2i m_lod; // Min & Max level of detail diff --git a/plugins/GSdx/GSRendererOGL.cpp b/plugins/GSdx/GSRendererOGL.cpp index 91cc02a8bc..e3c20257a9 100644 --- a/plugins/GSdx/GSRendererOGL.cpp +++ b/plugins/GSdx/GSRendererOGL.cpp @@ -34,9 +34,6 @@ GSRendererOGL::GSRendererOGL() // Hope nothing requires too many draw calls. m_drawlist.reserve(2048); - UserHacks_TCOffset = theApp.GetConfigI("UserHacks_TCOffset"); - UserHacks_TCO_x = (UserHacks_TCOffset & 0xFFFF) / -1000.0f; - UserHacks_TCO_y = ((UserHacks_TCOffset >> 16) & 0xFFFF) / -1000.0f; UserHacks_unscale_pt_ln = theApp.GetConfigB("UserHacks_unscale_point_line"); UserHacks_HPO = theApp.GetConfigI("UserHacks_HalfPixelOffset"); UserHacks_tri_filter = static_cast(theApp.GetConfigI("UserHacks_TriFilter")); @@ -45,9 +42,6 @@ GSRendererOGL::GSRendererOGL() ResetStates(); if (!theApp.GetConfigB("UserHacks")) { - UserHacks_TCOffset = 0; - UserHacks_TCO_x = 0; - UserHacks_TCO_y = 0; UserHacks_unscale_pt_ln = false; UserHacks_HPO = 0; UserHacks_tri_filter = TriFiltering::None; @@ -844,8 +838,8 @@ void GSRendererOGL::EmulateTextureSampler(const GSTextureCache::Source* tex) } // TC Offset Hack - m_ps_sel.tcoffsethack = !!UserHacks_TCOffset; - ps_cb.TC_OH_TS = GSVector4(1/16.0f, 1/16.0f, UserHacks_TCO_x, UserHacks_TCO_y) / WH.xyxy(); + m_ps_sel.tcoffsethack = !!m_userhacks_tcoffset; + ps_cb.TC_OH_TS = GSVector4(1/16.0f, 1/16.0f, m_userhacks_tcoffset_x, m_userhacks_tcoffset_y) / WH.xyxy(); // Only enable clamping in CLAMP mode. REGION_CLAMP will be done manually in the shader diff --git a/plugins/GSdx/GSRendererOGL.h b/plugins/GSdx/GSRendererOGL.h index ebe79ac679..194416b16b 100644 --- a/plugins/GSdx/GSRendererOGL.h +++ b/plugins/GSdx/GSRendererOGL.h @@ -50,8 +50,6 @@ class GSRendererOGL final : public GSRendererHW PRIM_OVERLAP m_prim_overlap; std::vector m_drawlist; - unsigned int UserHacks_TCOffset; - float UserHacks_TCO_x, UserHacks_TCO_y; bool UserHacks_unscale_pt_ln; int UserHacks_HPO; TriFiltering UserHacks_tri_filter;