Reset viewport in CopyDisplayToOutput. Fixes flickering video in non-1:1 resolutions in some games.

This commit is contained in:
Henrik Rydgard 2013-10-22 11:19:06 +02:00
parent de39a81dce
commit 492fcb261b
2 changed files with 3 additions and 2 deletions

View File

@ -754,6 +754,7 @@ void FramebufferManager::SetLineWidth() {
void FramebufferManager::CopyDisplayToOutput() {
fbo_unbind();
glstate.viewport.set(0, 0, PSP_CoreParameter().pixelWidth, PSP_CoreParameter().pixelHeight);
currentRenderVfb_ = 0;
VirtualFramebuffer *vfb = GetVFBAt(displayFramebufPtr_);
@ -769,7 +770,7 @@ void FramebufferManager::CopyDisplayToOutput() {
}
if (!vfb) {
// Just a pointer to plain memory to draw. Draw it.
// Just a pointer to plain memory to draw. Draw it. And make sure to set the viewport...
DrawPixels(Memory::GetPointer(displayFramebufPtr_), displayFormat_, displayStride_);
return;
}

View File

@ -1517,7 +1517,7 @@ void GLES_GPU::DoBlockTransfer() {
return;
}
// Do the copy!
// Do the copy! (Hm, if we detect a drawn video frame (see below) then we could maybe skip this?)
for (int y = 0; y < height; y++) {
const u8 *src = Memory::GetPointer(srcBasePtr + ((y + srcY) * srcStride + srcX) * bpp);
u8 *dst = Memory::GetPointer(dstBasePtr + ((y + dstY) * dstStride + dstX) * bpp);