From 39f509feaa5f4062f4e7d57473f1aae11378a4ec Mon Sep 17 00:00:00 2001 From: KrossX Date: Sun, 16 Jun 2019 16:06:08 +0200 Subject: [PATCH] gsdx-hw: Remove no longer needed Sprite hack, replaced by improved atst code already. --- plugins/GSdx/GSdx.cpp | 1 - plugins/GSdx/Renderers/DX11/GSDevice11.cpp | 4 +--- plugins/GSdx/Renderers/DX11/GSDevice11.h | 3 +-- .../GSdx/Renderers/DX11/GSRendererDX11.cpp | 20 ++++--------------- plugins/GSdx/Renderers/DX11/GSTextureFX11.cpp | 1 - plugins/GSdx/Renderers/HW/GSTextureCache.cpp | 13 ------------ plugins/GSdx/Renderers/HW/GSTextureCache.h | 2 -- .../GSdx/Renderers/OpenGL/GSRendererOGL.cpp | 8 ++------ plugins/GSdx/res/tfx.fx | 3 --- 9 files changed, 8 insertions(+), 47 deletions(-) diff --git a/plugins/GSdx/GSdx.cpp b/plugins/GSdx/GSdx.cpp index b48c9d22cd..46b37bf76c 100644 --- a/plugins/GSdx/GSdx.cpp +++ b/plugins/GSdx/GSdx.cpp @@ -459,7 +459,6 @@ void GSdxApp::Init() m_default_configuration["UserHacks_round_sprite_offset"] = "0"; m_default_configuration["UserHacks_SkipDraw"] = "0"; m_default_configuration["UserHacks_SkipDraw_Offset"] = "0"; - m_default_configuration["UserHacks_SpriteHack"] = "0"; m_default_configuration["UserHacks_TCOffsetX"] = "0"; m_default_configuration["UserHacks_TCOffsetY"] = "0"; m_default_configuration["UserHacks_TextureInsideRt"] = "0"; diff --git a/plugins/GSdx/Renderers/DX11/GSDevice11.cpp b/plugins/GSdx/Renderers/DX11/GSDevice11.cpp index 907903cf60..db16dd7da0 100644 --- a/plugins/GSdx/Renderers/DX11/GSDevice11.cpp +++ b/plugins/GSdx/Renderers/DX11/GSDevice11.cpp @@ -243,9 +243,7 @@ bool GSDevice11::Create(const std::shared_ptr &wnd) dxd->Release(); } - bool spritehack_enabled = theApp.GetConfigB("UserHacks") && theApp.GetConfigI("UserHacks_SpriteHack"); - - m_hack_topleft_offset = (!nvidia_gpu || m_upscale_multiplier == 1 || spritehack_enabled) ? 0.0f : -0.01f; + m_hack_topleft_offset = (!nvidia_gpu || m_upscale_multiplier == 1) ? 0.0f : -0.01f; } // debug diff --git a/plugins/GSdx/Renderers/DX11/GSDevice11.h b/plugins/GSdx/Renderers/DX11/GSDevice11.h index 1e3d76418d..ebee7f6b6d 100644 --- a/plugins/GSdx/Renderers/DX11/GSDevice11.h +++ b/plugins/GSdx/Renderers/DX11/GSDevice11.h @@ -222,14 +222,13 @@ public: uint32 channel:3; // Hack - uint32 spritehack:1; uint32 tcoffsethack:1; uint32 urban_chaos_hle:1; uint32 tales_of_abyss_hle:1; uint32 point_sampler:1; uint32 invalid_tex0:1; // Lupin the 3rd - uint32 _free:18; + uint32 _free:19; }; uint64 key; diff --git a/plugins/GSdx/Renderers/DX11/GSRendererDX11.cpp b/plugins/GSdx/Renderers/DX11/GSRendererDX11.cpp index 2dfc7497c4..a991f95434 100644 --- a/plugins/GSdx/Renderers/DX11/GSRendererDX11.cpp +++ b/plugins/GSdx/Renderers/DX11/GSRendererDX11.cpp @@ -113,15 +113,8 @@ void GSRendererDX11::EmulateAtst(const int pass, const GSTextureCache::Source* t switch (atst) { case ATST_LESS: - if (tex && tex->m_spritehack_t) - { - m_ps_sel.atst = 0; - } - else - { - ps_cb.FogColor_AREF.a = (float)m_context->TEST.AREF - 0.1f; - m_ps_sel.atst = 1; - } + ps_cb.FogColor_AREF.a = (float)m_context->TEST.AREF - 0.1f; + m_ps_sel.atst = 1; break; case ATST_LEQUAL: ps_cb.FogColor_AREF.a = (float)m_context->TEST.AREF - 0.1f + 1.0f; @@ -737,7 +730,6 @@ void GSRendererDX11::EmulateTextureSampler(const GSTextureCache::Source* tex) m_ps_sel.ltf = bilinear && shader_emulated_sampler; - m_ps_sel.spritehack = tex->m_spritehack_t; m_ps_sel.point_sampler = !bilinear || shader_emulated_sampler; GSVector4 TextureScale = GSVector4(0.0625f) / WH.xyxy(); @@ -1029,12 +1021,8 @@ void GSRendererDX11::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sou if (m_context->TEST.DATM == 0) m_ps_sel.atst = 2; // >= else - { - if (tex && tex->m_spritehack_t) - m_ps_sel.atst = 0; // < - else - m_ps_sel.atst = 1; // < - } + m_ps_sel.atst = 1; // < + ps_cb.FogColor_AREF.a = (float)0x80; } if (!(m_context->FBA.FBA && m_context->TEST.DATM == 1)) diff --git a/plugins/GSdx/Renderers/DX11/GSTextureFX11.cpp b/plugins/GSdx/Renderers/DX11/GSTextureFX11.cpp index 1fed76180a..ed7d2060bb 100644 --- a/plugins/GSdx/Renderers/DX11/GSTextureFX11.cpp +++ b/plugins/GSdx/Renderers/DX11/GSTextureFX11.cpp @@ -206,7 +206,6 @@ void GSDevice11::SetupPS(PSSelector sel, const PSConstantBuffer* cb, PSSamplerSe sm.AddMacro("PS_FBA", sel.fba); sm.AddMacro("PS_FBMASK", sel.fbmask); sm.AddMacro("PS_LTF", sel.ltf); - sm.AddMacro("PS_SPRITEHACK", sel.spritehack); sm.AddMacro("PS_TCOFFSETHACK", sel.tcoffsethack); sm.AddMacro("PS_POINT_SAMPLER", sel.point_sampler); sm.AddMacro("PS_SHUFFLE", sel.shuffle); diff --git a/plugins/GSdx/Renderers/HW/GSTextureCache.cpp b/plugins/GSdx/Renderers/HW/GSTextureCache.cpp index c0dd93c812..be1a242774 100644 --- a/plugins/GSdx/Renderers/HW/GSTextureCache.cpp +++ b/plugins/GSdx/Renderers/HW/GSTextureCache.cpp @@ -32,7 +32,6 @@ GSTextureCache::GSTextureCache(GSRenderer* r) , m_palette_map(r) { if (theApp.GetConfigB("UserHacks")) { - m_spritehack = theApp.GetConfigI("UserHacks_SpriteHack"); UserHacks_HalfPixelOffset = theApp.GetConfigI("UserHacks_HalfPixelOffset") == 1; m_preload_frame = theApp.GetConfigB("preload_frame_with_gs_data"); m_disable_partial_invalidation = theApp.GetConfigB("UserHacks_DisablePartialInvalidation"); @@ -41,7 +40,6 @@ GSTextureCache::GSTextureCache(GSRenderer* r) m_texture_inside_rt = theApp.GetConfigB("UserHacks_TextureInsideRt"); m_wrap_gs_mem = theApp.GetConfigB("wrap_gs_mem"); } else { - m_spritehack = 0; UserHacks_HalfPixelOffset = false; m_preload_frame = false; m_disable_partial_invalidation = false; @@ -1140,16 +1138,6 @@ GSTextureCache::Source* GSTextureCache::CreateSource(const GIFRegTEX0& TEX0, con bool hack = false; - if(m_spritehack && (TEX0.PSM == PSM_PSMT8 || TEX0.PSM == PSM_PSMT8H)) - { - src->m_spritehack_t = true; - - if(m_spritehack == 2 && TEX0.CPSM != PSM_PSMCT16) - src->m_spritehack_t = false; - } - else - src->m_spritehack_t = false; - if (dst && (x_offset != 0 || y_offset != 0)) { GSVector2 scale = dst->m_texture->GetScale(); @@ -1557,7 +1545,6 @@ GSTextureCache::Source::Source(GSRenderer* r, const GIFRegTEX0& TEX0, const GIFR , m_valid_rect(0, 0) , m_target(false) , m_complete(false) - , m_spritehack_t(false) , m_p2t(NULL) , m_from_target(NULL) { diff --git a/plugins/GSdx/Renderers/HW/GSTextureCache.h b/plugins/GSdx/Renderers/HW/GSTextureCache.h index 4fc7f62ff8..b9250eed67 100644 --- a/plugins/GSdx/Renderers/HW/GSTextureCache.h +++ b/plugins/GSdx/Renderers/HW/GSTextureCache.h @@ -108,7 +108,6 @@ public: bool m_target; bool m_complete; bool m_repeating; - bool m_spritehack_t; std::vector* m_p2t; // Keep a trace of the target origin. There is no guarantee that pointer will // still be valid on future. However it ought to be good when the source is created @@ -191,7 +190,6 @@ protected: SourceMap m_src; FastList m_dst[2]; bool m_paltex; - int m_spritehack; bool m_preload_frame; uint8* m_temp; bool m_can_convert_depth; diff --git a/plugins/GSdx/Renderers/OpenGL/GSRendererOGL.cpp b/plugins/GSdx/Renderers/OpenGL/GSRendererOGL.cpp index 50a5eadc86..7c72cb3511 100644 --- a/plugins/GSdx/Renderers/OpenGL/GSRendererOGL.cpp +++ b/plugins/GSdx/Renderers/OpenGL/GSRendererOGL.cpp @@ -128,12 +128,8 @@ void GSRendererOGL::EmulateAtst(const int pass, const GSTextureCache::Source* te switch (atst) { case ATST_LESS: - if (tex && tex->m_spritehack_t) { - m_ps_sel.atst = 0; - } else { - ps_cb.FogColor_AREF.a = (float)m_context->TEST.AREF - 0.1f; - m_ps_sel.atst = 1; - } + ps_cb.FogColor_AREF.a = (float)m_context->TEST.AREF - 0.1f; + m_ps_sel.atst = 1; break; case ATST_LEQUAL: ps_cb.FogColor_AREF.a = (float)m_context->TEST.AREF - 0.1f + 1.0f; diff --git a/plugins/GSdx/res/tfx.fx b/plugins/GSdx/res/tfx.fx index dafb0a4282..8b1b32c63e 100644 --- a/plugins/GSdx/res/tfx.fx +++ b/plugins/GSdx/res/tfx.fx @@ -31,7 +31,6 @@ #define PS_FBA 0 #define PS_FBMASK 0 #define PS_LTF 1 -#define PS_SPRITEHACK 0 #define PS_TCOFFSETHACK 0 #define PS_POINT_SAMPLER 0 #define PS_SHUFFLE 0 @@ -590,9 +589,7 @@ void atst(float4 c) } else if(PS_ATST == 1) { - #if PS_SPRITEHACK == 0 if (a > AREF) discard; - #endif } else if(PS_ATST == 2) {