Merge pull request #7406 from AdmiralCurtiss/xfb_rect_scale_from_ram

Correctly adjust the rendered XFB region at non-native internal resolutions when XFB was loaded from console RAM.
This commit is contained in:
Stenzek 2018-09-14 14:59:50 +10:00 committed by GitHub
commit ce9e9186f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -676,7 +676,16 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, const
m_last_xfb_ticks = ticks;
auto xfb_rect = texture_config.GetRect();
xfb_rect.right -= EFBToScaledX(fbStride - fbWidth);
// It's possible that the returned XFB texture is native resolution
// even when we're rendering at higher than native resolution
// if the XFB was was loaded entirely from console memory.
// If so, adjust the rectangle by native resolution instead of scaled resolution.
const u32 native_stride_width_difference = fbStride - fbWidth;
if (texture_config.width == xfb_entry->native_width)
xfb_rect.right -= native_stride_width_difference;
else
xfb_rect.right -= EFBToScaledX(native_stride_width_difference);
m_last_xfb_region = xfb_rect;