GSDX-TextureCache: Add proper rounding when unscaling texture size

Fixes flickering issues on Dragon Ball Z Budokai Tenkaichi FMV's on custom resolution, might also help prevent some crashes on custom resolution.
This commit is contained in:
Akash 2016-07-26 18:24:01 +05:30
parent c592ccb3e5
commit d3ebd4b318
1 changed files with 5 additions and 2 deletions

View File

@ -1738,8 +1738,11 @@ void GSTextureCache::Target::Update()
GSVector2i t_size = m_texture->GetSize();
GSVector2 t_scale = m_texture->GetScale();
t_size.x = (int)((float)t_size.x/max(1.0f, t_scale.x));
t_size.y = (int)((float)t_size.y/max(1.0f, t_scale.y));
//Avoids division by zero when calculating texture size.
t_scale = GSVector2(max(1.0f, t_scale.x), max(1.0f, t_scale.y));
t_size.x = lround(static_cast<float>(t_size.x) / t_scale.x);
t_size.y = lround(static_cast<float>(t_size.y) / t_scale.y);
// Don't load above the GS memory
int max_y_blocks = (MAX_BLOCKS - m_TEX0.TBP0) / max(1u, m_TEX0.TBW);