|
|
@ -33,6 +33,13 @@ void nvdisp_disp0::flip(u32 buffer_handle, u32 offset, u32 format, u32 width, u3
|
|
|
|
addr, offset, width, height, stride, static_cast<PixelFormat>(format), flip_vertical};
|
|
|
|
addr, offset, width, height, stride, static_cast<PixelFormat>(format), flip_vertical};
|
|
|
|
|
|
|
|
|
|
|
|
Core::System::GetInstance().perf_stats.EndGameFrame();
|
|
|
|
Core::System::GetInstance().perf_stats.EndGameFrame();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO(bunnei): The framebuffer region should only be flushed and invalidated if it is written
|
|
|
|
|
|
|
|
// to, not every frame. When we find the right place for this, the below line can be removed.
|
|
|
|
|
|
|
|
Memory::RasterizerFlushVirtualRegion(framebuffer.address,
|
|
|
|
|
|
|
|
framebuffer.width * framebuffer.height * 4,
|
|
|
|
|
|
|
|
Memory::FlushMode::FlushAndInvalidate);
|
|
|
|
|
|
|
|
|
|
|
|
VideoCore::g_renderer->SwapBuffers(framebuffer);
|
|
|
|
VideoCore::g_renderer->SwapBuffers(framebuffer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|