renderer: when a RTT frame is rendered, swap any pending frame first

Fixes Tony Hawks 1 & 2 black screen issue
This commit is contained in:
Flyinghead 2019-06-19 15:10:28 +02:00
parent ad5ab6240b
commit becb0a5efe
1 changed files with 8 additions and 0 deletions

View File

@ -253,6 +253,14 @@ bool rend_frame(TA_context* ctx, bool draw_osd) {
dump_frame_switch = false;
}
bool proc = renderer->Process(ctx);
if ((ctx->rend.isRTT || ctx->rend.isRenderFramebuffer) && swap_pending)
{
// If there a frame swap pending, we want to do it now.
// The current frame "swapping" detection mechanism (using FB_R_SOF1) doesn't work
// if a RTT frame is rendered in between.
renderer->Present();
swap_pending = false;
}
#if !defined(TARGET_NO_THREADS)
if (!proc || (!ctx->rend.isRTT && !ctx->rend.isRenderFramebuffer))
// If rendering to texture, continue locking until the frame is rendered