gsdx hw: round mipmap lod value

Will avoid some corruption based on distance/angle
This commit is contained in:
Gregory Hainaut 2016-09-24 20:05:39 +02:00
parent 719982e4a3
commit 6e2bf98d5f
1 changed files with 2 additions and 2 deletions

View File

@ -491,7 +491,7 @@ void GSRendererHW::Draw()
//gd.sel.mmin = (context->TEX1.MMIN & 1) + 1; // 1: round, 2: tri //gd.sel.mmin = (context->TEX1.MMIN & 1) + 1; // 1: round, 2: tri
int mxl = std::min<int>((int)m_context->TEX1.MXL, 6); int mxl = std::min<int>((int)m_context->TEX1.MXL, 6);
int k = (m_context->TEX1.K >> 4); int k = (m_context->TEX1.K + 8) >> 4;
int lcm = m_context->TEX1.LCM; int lcm = m_context->TEX1.LCM;
if ((int)m_vt.m_lod.x >= mxl) { if ((int)m_vt.m_lod.x >= mxl) {
@ -510,7 +510,7 @@ void GSRendererHW::Draw()
lod = std::max<int>(std::min<int>(k, mxl), 0); lod = std::max<int>(std::min<int>(k, mxl), 0);
} else { } else {
// Not constant but who care ! // Not constant but who care !
lod = std::max<int>((int)m_vt.m_lod.x, 0); lod = std::max<int>((int)round(m_vt.m_lod.x), 0);
} }
MIP_CLAMP.MINU >>= lod; MIP_CLAMP.MINU >>= lod;