@@ -374,7 +374,7 @@ VirtualFramebuffer *FramebufferManagerCommon::DoSetRenderFrameBuffer(const Frame
374
374
ResizeFramebufFBO (vfb, drawing_width, drawing_height, true );
375
375
NotifyRenderFramebufferCreated (vfb);
376
376
377
- INFO_LOG (FRAMEBUF, " Creating FBO for %08x : %i x %i x %i" , vfb->fb_address , vfb->width , vfb->height , vfb->format );
377
+ INFO_LOG (FRAMEBUF, " Creating FBO for %08x (z : %08x) : % i x %i x %i" , vfb->fb_address , vfb-> z_address , vfb->width , vfb->height , vfb->format );
378
378
379
379
vfb->last_frame_render = gpuStats.numFlips ;
380
380
frameLastFramebufUsed_ = gpuStats.numFlips ;
@@ -445,7 +445,9 @@ VirtualFramebuffer *FramebufferManagerCommon::DoSetRenderFrameBuffer(const Frame
445
445
}
446
446
447
447
void FramebufferManagerCommon::DestroyFramebuf (VirtualFramebuffer *v) {
448
- textureCache_->NotifyFramebuffer (v->fb_address , v, NOTIFY_FB_DESTROYED);
448
+ // Notify the texture cache of both the color and depth buffers.
449
+ textureCache_->NotifyFramebuffer (v->fb_address , v, NOTIFY_FB_DESTROYED, NOTIFY_FB_COLOR);
450
+ textureCache_->NotifyFramebuffer (v->z_address , v, NOTIFY_FB_DESTROYED, NOTIFY_FB_DEPTH);
449
451
if (v->fbo ) {
450
452
v->fbo ->Release ();
451
453
v->fbo = nullptr ;
@@ -472,7 +474,8 @@ void FramebufferManagerCommon::NotifyRenderFramebufferCreated(VirtualFramebuffer
472
474
DownloadFramebufferOnSwitch (currentRenderVfb_);
473
475
}
474
476
475
- textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_CREATED);
477
+ textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_CREATED, NOTIFY_FB_COLOR);
478
+ textureCache_->NotifyFramebuffer (vfb->z_address , vfb, NOTIFY_FB_CREATED, NOTIFY_FB_DEPTH);
476
479
477
480
// Ugly...
478
481
if (gstate_c.curRTWidth != vfb->width || gstate_c.curRTHeight != vfb->height ) {
@@ -486,7 +489,8 @@ void FramebufferManagerCommon::NotifyRenderFramebufferCreated(VirtualFramebuffer
486
489
487
490
void FramebufferManagerCommon::NotifyRenderFramebufferUpdated (VirtualFramebuffer *vfb, bool vfbFormatChanged) {
488
491
if (vfbFormatChanged) {
489
- textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_UPDATED);
492
+ textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_UPDATED, NOTIFY_FB_COLOR);
493
+ textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_UPDATED, NOTIFY_FB_DEPTH);
490
494
if (vfb->drawnFormat != vfb->format ) {
491
495
ReformatFramebufferFrom (vfb, vfb->drawnFormat );
492
496
}
@@ -552,7 +556,8 @@ void FramebufferManagerCommon::NotifyRenderFramebufferSwitched(VirtualFramebuffe
552
556
} else {
553
557
if (vfb->fbo ) {
554
558
// This should only happen very briefly when toggling useBufferedRendering_.
555
- textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_DESTROYED);
559
+ textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_DESTROYED, NOTIFY_FB_COLOR);
560
+ textureCache_->NotifyFramebuffer (vfb->z_address , vfb, NOTIFY_FB_DESTROYED, NOTIFY_FB_DEPTH);
556
561
vfb->fbo ->Release ();
557
562
vfb->fbo = nullptr ;
558
563
}
@@ -564,7 +569,8 @@ void FramebufferManagerCommon::NotifyRenderFramebufferSwitched(VirtualFramebuffe
564
569
gstate_c.skipDrawReason |= SKIPDRAW_NON_DISPLAYED_FB;
565
570
}
566
571
}
567
- textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_UPDATED);
572
+ textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_UPDATED, NOTIFY_FB_COLOR);
573
+ textureCache_->NotifyFramebuffer (vfb->z_address , vfb, NOTIFY_FB_UPDATED, NOTIFY_FB_DEPTH);
568
574
569
575
// ugly... is all this needed?
570
576
if (gstate_c.curRTWidth != vfb->width || gstate_c.curRTHeight != vfb->height ) {
@@ -1164,9 +1170,9 @@ bool FramebufferManagerCommon::NotifyFramebufferCopy(u32 src, u32 dst, int size,
1164
1170
1165
1171
if (dstBuffer && srcBuffer && !isMemset) {
1166
1172
if (srcBuffer == dstBuffer) {
1167
- WARN_LOG_REPORT_ONCE (dstsrccpy, G3D, " Intra-buffer memcpy (not supported) %08x -> %08x" , src, dst);
1173
+ WARN_LOG_ONCE (dstsrccpy, G3D, " Intra-buffer memcpy (not supported) %08x -> %08x (size: %x) " , src, dst, size );
1168
1174
} else {
1169
- WARN_LOG_REPORT_ONCE (dstnotsrccpy, G3D, " Inter-buffer memcpy %08x -> %08x" , src, dst);
1175
+ WARN_LOG_ONCE (dstnotsrccpy, G3D, " Inter-buffer memcpy %08x -> %08x (size: %x) " , src, dst, size );
1170
1176
// Just do the blit!
1171
1177
BlitFramebuffer (dstBuffer, 0 , dstY, srcBuffer, 0 , srcY, srcBuffer->width , srcH, 0 );
1172
1178
SetColorUpdated (dstBuffer, skipDrawReason);
@@ -1177,7 +1183,7 @@ bool FramebufferManagerCommon::NotifyFramebufferCopy(u32 src, u32 dst, int size,
1177
1183
if (isMemset) {
1178
1184
gpuStats.numClears ++;
1179
1185
}
1180
- WARN_LOG_ONCE (btucpy, G3D, " Memcpy fbo upload %08x -> %08x" , src, dst);
1186
+ WARN_LOG_ONCE (btucpy, G3D, " Memcpy fbo upload %08x -> %08x (size: %x) " , src, dst, size );
1181
1187
FlushBeforeCopy ();
1182
1188
const u8 *srcBase = Memory::GetPointerUnchecked (src);
1183
1189
DrawPixels (dstBuffer, 0 , dstY, srcBase, dstBuffer->format , dstBuffer->fb_stride , dstBuffer->width , dstH);
@@ -1189,7 +1195,7 @@ bool FramebufferManagerCommon::NotifyFramebufferCopy(u32 src, u32 dst, int size,
1189
1195
WARN_LOG_ONCE (btdcpy, G3D, " Memcpy fbo download %08x -> %08x" , src, dst);
1190
1196
FlushBeforeCopy ();
1191
1197
if (srcH == 0 || srcY + srcH > srcBuffer->bufferHeight ) {
1192
- WARN_LOG_REPORT_ONCE (btdcpyheight, G3D, " Memcpy fbo download %08x -> %08x skipped, %d+%d is taller than %d" , src, dst, srcY, srcH, srcBuffer->bufferHeight );
1198
+ WARN_LOG_ONCE (btdcpyheight, G3D, " Memcpy fbo download %08x -> %08x skipped, %d+%d is taller than %d" , src, dst, srcY, srcH, srcBuffer->bufferHeight );
1193
1199
} else if (g_Config.bBlockTransferGPU && !srcBuffer->memoryUpdated && !PSP_CoreParameter ().compat .flags ().DisableReadbacks ) {
1194
1200
ReadFramebufferToMemory (srcBuffer, 0 , srcY, srcBuffer->width , srcH);
1195
1201
srcBuffer->usageFlags = (srcBuffer->usageFlags | FB_USAGE_DOWNLOAD) & ~FB_USAGE_DOWNLOAD_CLEAR;
@@ -1330,9 +1336,9 @@ VirtualFramebuffer *FramebufferManagerCommon::CreateRAMFramebuffer(uint32_t fbAd
1330
1336
vfb->drawnFormat = GE_FORMAT_8888;
1331
1337
vfb->usageFlags = FB_USAGE_RENDERTARGET;
1332
1338
SetColorUpdated (vfb, 0 );
1333
- textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_CREATED);
1334
1339
char name[64 ];
1335
1340
snprintf (name, sizeof (name), " %08x_color_RAM" , vfb->fb_address );
1341
+ textureCache_->NotifyFramebuffer (vfb->fb_address , vfb, NOTIFY_FB_CREATED, NOTIFY_FB_COLOR);
1336
1342
vfb->fbo = draw_->CreateFramebuffer ({ vfb->renderWidth , vfb->renderHeight , 1 , 1 , true , (Draw::FBColorDepth)vfb->colorDepth , name });
1337
1343
vfbs_.push_back (vfb);
1338
1344
0 commit comments