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:
mimimi085181 2016-04-26 23:25:38 +02:00
parent 3033096223
commit 8c34463f14
1 changed files with 11 additions and 6 deletions

View File

@ -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: