diff --git a/plugins/GSdx/GSClut.cpp b/plugins/GSdx/GSClut.cpp index 30808bcd47..f9e1f516b7 100644 --- a/plugins/GSdx/GSClut.cpp +++ b/plugins/GSdx/GSClut.cpp @@ -98,6 +98,13 @@ void GSClut::Invalidate() m_write.dirty = true; } +void GSClut::Invalidate(uint32 block) +{ + if (block == m_write.TEX0.CBP) { + m_write.dirty = true; + } +} + bool GSClut::WriteTest(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT) { switch(TEX0.CLD) diff --git a/plugins/GSdx/GSClut.h b/plugins/GSdx/GSClut.h index a4c6ce750a..df3c713518 100644 --- a/plugins/GSdx/GSClut.h +++ b/plugins/GSdx/GSClut.h @@ -103,6 +103,7 @@ public: virtual ~GSClut(); void Invalidate(); + void Invalidate(uint32 block); bool WriteTest(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT); void Write(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT); //void Read(const GIFRegTEX0& TEX0); diff --git a/plugins/GSdx/GSRendererSW.cpp b/plugins/GSdx/GSRendererSW.cpp index 6b8d20f121..1c462a1ff7 100644 --- a/plugins/GSdx/GSRendererSW.cpp +++ b/plugins/GSdx/GSRendererSW.cpp @@ -665,6 +665,8 @@ void GSRendererSW::Queue(shared_ptr& item) if(sd->global.sel.fwrite) { m_tc->InvalidatePages(sd->m_fb_pages, sd->m_fpsm); + + m_mem.m_clut.Invalidate(m_context->FRAME.Block()); } if(sd->global.sel.zwrite)