From cb6f97b2eb129da599f297a605b669b34bccc8e2 Mon Sep 17 00:00:00 2001 From: Tony Wasserka Date: Wed, 16 Jul 2014 09:22:08 +0200 Subject: Renderer: Respect the active_fb GPU register. --- src/video_core/renderer_opengl/renderer_opengl.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/video_core/renderer_opengl/renderer_opengl.cpp') diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 064f47e3..c549f474 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -78,14 +78,21 @@ void RendererOpenGL::FlipFramebuffer(const u8* in, u8* out) { */ void RendererOpenGL::RenderXFB(const common::Rect& src_rect, const common::Rect& dst_rect) { + const u32 active_fb_top = (GPU::g_regs.top_framebuffer.active_fb == 1) + ? GPU::g_regs.framebuffer_top_left_2 + : GPU::g_regs.framebuffer_top_left_1; + const u32 active_fb_sub = (GPU::g_regs.sub_framebuffer.active_fb == 1) + ? GPU::g_regs.framebuffer_sub_left_2 + : GPU::g_regs.framebuffer_sub_left_1; + DEBUG_LOG(GPU, "RenderXFB: %x bytes from %x(%xx%x), fmt %x", GPU::g_regs.top_framebuffer.stride * GPU::g_regs.top_framebuffer.height, GPU::GetFramebufferAddr(GPU::g_regs.framebuffer_top_left_1), (int)GPU::g_regs.top_framebuffer.width, (int)GPU::g_regs.top_framebuffer.height, (int)GPU::g_regs.top_framebuffer.format); // TODO: This should consider the GPU registers for framebuffer width, height and stride. - FlipFramebuffer(GPU::GetFramebufferPointer(GPU::g_regs.framebuffer_top_left_1), m_xfb_top_flipped); - FlipFramebuffer(GPU::GetFramebufferPointer(GPU::g_regs.framebuffer_sub_left_1), m_xfb_bottom_flipped); + FlipFramebuffer(GPU::GetFramebufferPointer(active_fb_top), m_xfb_top_flipped); + FlipFramebuffer(GPU::GetFramebufferPointer(active_fb_sub), m_xfb_bottom_flipped); // Blit the top framebuffer // ------------------------ -- cgit v1.2.3