Make integral auto IR(multiple of 640x528) work as expected
Right now, it's possible that x and y are scaled differently, if efb and xfb size are not the same.
This commit is contained in:
parent
3033096223
commit
8c34463f14
|
@ -189,13 +189,18 @@ bool Renderer::CalculateTargetSize(unsigned int framebuffer_width, unsigned int
|
||||||
|
|
||||||
if (s_last_efb_scale == SCALE_AUTO_INTEGRAL)
|
if (s_last_efb_scale == SCALE_AUTO_INTEGRAL)
|
||||||
{
|
{
|
||||||
newEFBWidth = ((newEFBWidth-1) / EFB_WIDTH + 1) * EFB_WIDTH;
|
efb_scale_numeratorX = efb_scale_numeratorY = std::max((newEFBWidth - 1) / EFB_WIDTH + 1, (newEFBHeight - 1) / EFB_HEIGHT + 1);
|
||||||
newEFBHeight = ((newEFBHeight-1) / EFB_HEIGHT + 1) * EFB_HEIGHT;
|
efb_scale_denominatorX = efb_scale_denominatorY = 1;
|
||||||
|
newEFBWidth = EFBToScaledX(EFB_WIDTH);
|
||||||
|
newEFBHeight = EFBToScaledY(EFB_HEIGHT);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
efb_scale_numeratorX = newEFBWidth;
|
efb_scale_numeratorX = newEFBWidth;
|
||||||
efb_scale_denominatorX = EFB_WIDTH;
|
efb_scale_denominatorX = EFB_WIDTH;
|
||||||
efb_scale_numeratorY = newEFBHeight;
|
efb_scale_numeratorY = newEFBHeight;
|
||||||
efb_scale_denominatorY = EFB_HEIGHT;
|
efb_scale_denominatorY = EFB_HEIGHT;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCALE_1X:
|
case SCALE_1X:
|
||||||
|
|
Loading…
Reference in New Issue