From e12c2cf8c692bf7581dda96c601e30c2a969086c Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 22 Mar 2018 23:18:04 -0400 Subject: nvdisp_disp0: Always flush and invalidate framebuffer region. - Workaround for texture forwarding until we have a better place. --- src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp index 7cd1d9306..db030a8e2 100644 --- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp +++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp @@ -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(format), flip_vertical}; 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); } -- cgit v1.2.3