From 07d380221e4b1a260747aa90f13cd6f302a80d74 Mon Sep 17 00:00:00 2001 From: fincs Date: Thu, 30 Mar 2017 23:37:30 +0200 Subject: [PATCH] Correct transferring right-framebuf when 3d is enabled --- source/renderqueue.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/source/renderqueue.c b/source/renderqueue.c index 8cc663c..8dea790 100644 --- a/source/renderqueue.c +++ b/source/renderqueue.c @@ -33,13 +33,6 @@ static bool framerateLimit(int id) return false; } -static void C3Di_TargetTransfer(C3D_RenderTarget* target, gfxScreen_t screen, gfx3dSide_t side) -{ - C3D_FrameBufTransfer(&target->frameBuf, screen, side, target->transferFlags); - if (target->clearBits) - C3D_FrameBufClear(&target->frameBuf, target->clearBits, target->clearColor, target->clearDepth); -} - static void onVBlank0(C3D_UNUSED void* unused) { gxCmdQueue_s* queue = &C3Di_GetContext()->gxQueue; @@ -59,9 +52,13 @@ static void onVBlank0(C3D_UNUSED void* unused) { frameStage |= STAGE_WAIT_TRANSFER; if (left) - C3Di_TargetTransfer(left, GFX_TOP, GFX_LEFT); + C3D_FrameBufTransfer(&left->frameBuf, GFX_TOP, GFX_LEFT, left->transferFlags); if (right) - C3Di_TargetTransfer(right, GFX_TOP, GFX_RIGHT); + C3D_FrameBufTransfer(&right->frameBuf, GFX_TOP, GFX_RIGHT, right->transferFlags); + if (left && left->clearBits) + C3D_FrameBufClear(&left->frameBuf, left->clearBits, left->clearColor, left->clearDepth); + if (right && right != left && right->clearBits) + C3D_FrameBufClear(&right->frameBuf, right->clearBits, right->clearColor, right->clearDepth); gfxConfigScreen(GFX_TOP, false); } gxCmdQueueRun(queue); @@ -81,7 +78,9 @@ static void onVBlank1(C3D_UNUSED void* unused) if (target) { frameStage |= STAGE_WAIT_TRANSFER; - C3Di_TargetTransfer(target, GFX_BOTTOM, GFX_LEFT); + C3D_FrameBufTransfer(&target->frameBuf, GFX_TOP, GFX_LEFT, target->transferFlags); + if (target->clearBits) + C3D_FrameBufClear(&target->frameBuf, target->clearBits, target->clearColor, target->clearDepth); gfxConfigScreen(GFX_BOTTOM, false); } gxCmdQueueRun(queue);