diff --git a/plugins/GSdx/GSRendererSW.cpp b/plugins/GSdx/GSRendererSW.cpp index 9178242379..0477b20116 100644 --- a/plugins/GSdx/GSRendererSW.cpp +++ b/plugins/GSdx/GSRendererSW.cpp @@ -382,6 +382,14 @@ bool GSRendererSW::GetScanlineGlobalData(GSScanlineGlobalData& gd) int mxl = (std::min((int)context->TEX1.MXL, 6) << 16); int k = context->TEX1.K << 12; + if((int)m_vt.m_lod.x >= (int)context->TEX1.MXL) + { + k = (int)m_vt.m_lod.x << 16; // set lod to max + + gd.sel.lcm = 1; // lod is constant + gd.sel.mmin = 1; // tri-linear is meaningless + } + if(gd.sel.mmin == 2) { mxl--; // don't sample beyond the last level (TODO: add a dummy level instead?) @@ -395,13 +403,6 @@ bool GSRendererSW::GetScanlineGlobalData(GSScanlineGlobalData& gd) gd.sel.lcm = 1; } - if((int)m_vt.m_lod.x >= (int)context->TEX1.MXL) - { - k = (int)m_vt.m_lod.x << 16; - - gd.sel.lcm = 1; - } - if(gd.sel.lcm) { int lod = std::max(std::min(k, mxl), 0);