diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index 3e970aa1a908..738ce25303e4 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -353,7 +353,8 @@ int sceKernelRegisterDefaultExceptionHandler() void sceKernelSetGPO(u32 ledAddr) { // Sets debug LEDs. - DEBUG_LOG(SCEKERNEL, "sceKernelSetGPO(%02x)", ledAddr); + // Not really interesting, and a few games really spam it + // DEBUG_LOG(SCEKERNEL, "sceKernelSetGPO(%02x)", ledAddr); } u32 sceKernelGetGPI() diff --git a/GPU/Common/FramebufferManagerCommon.cpp b/GPU/Common/FramebufferManagerCommon.cpp index 5dcd14816c08..ead891d29609 100644 --- a/GPU/Common/FramebufferManagerCommon.cpp +++ b/GPU/Common/FramebufferManagerCommon.cpp @@ -412,7 +412,7 @@ VirtualFramebuffer *FramebufferManagerCommon::DoSetRenderFrameBuffer(const Frame // We might already want to copy depth, in case this is a temp buffer. See #7810. if (prevDepth->vfb != vfb) { - if (!params.isClearingDepth) { + if (!params.isClearingDepth && prevDepth->vfb) { BlitFramebufferDepth(prevDepth->vfb, vfb); } prevDepth->vfb = vfb; @@ -559,6 +559,12 @@ void FramebufferManagerCommon::BlitFramebufferDepth(VirtualFramebuffer *src, Vir TrackedDepthBuffer *FramebufferManagerCommon::GetOrCreateTrackedDepthBuffer(VirtualFramebuffer *vfb) { for (auto tracked : trackedDepthBuffers_) { + // Disable tracking if color of the new vfb is clashing with tracked depth. + if (vfb->fb_address == tracked->z_address) { + tracked->vfb = nullptr; // this is checked for. Cheaper than deleting. + continue; + } + if (vfb->z_address == tracked->z_address && vfb->z_stride == tracked->z_stride) { return tracked; } @@ -785,7 +791,7 @@ void FramebufferManagerCommon::NotifyRenderFramebufferSwitched(VirtualFramebuffe // We might already want to copy depth, in case this is a temp buffer. See #7810. if (prevDepth->vfb != vfb) { - if (!isClearingDepth) { + if (!isClearingDepth && prevDepth->vfb) { BlitFramebufferDepth(prevDepth->vfb, vfb); } prevDepth->vfb = vfb;