Просмотр исходного кода

Renderer: Respect the active_fb GPU register.

Tony Wasserka 12 лет назад
Родитель
Сommit
cb6f97b2eb
1 измененных файлов с 9 добавлено и 2 удалено
  1. 9 2
      src/video_core/renderer_opengl/renderer_opengl.cpp

+ 9 - 2
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
     // ------------------------