From 96c8353364293060d981c3a301a83dbdce134d86 Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Fri, 27 Mar 2020 15:15:20 +0100 Subject: [PATCH] pvr: don't discard RTT frames --- core/hw/pvr/ta_ctx.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/core/hw/pvr/ta_ctx.cpp b/core/hw/pvr/ta_ctx.cpp index 952b79ad5..b70afd7c4 100644 --- a/core/hw/pvr/ta_ctx.cpp +++ b/core/hw/pvr/ta_ctx.cpp @@ -122,18 +122,17 @@ bool QueueRender(TA_context* ctx) last_frame1 = os_GetSeconds(); bool too_fast = (cycle_span / time_span) > (SH4_MAIN_CLOCK * 1.2); - - if (rqueue && too_fast && settings.pvr.SynchronousRender) { + + // Vulkan: rtt frames seem to be discarded often + if (rqueue && (too_fast || ctx->rend.isRTT) && settings.pvr.SynchronousRender) //wait for a frame if // we have another one queue'd and // sh4 run at > 120% over the last two frames // and SynchronousRender is enabled frame_finished.Wait(); - } if (rqueue) { - // FIXME if the discarded render is a RTT we'll have a texture missing. But waiting for the current frame to finish kills performance... tactx_Recycle(ctx); fskip++; return false;