From 38479dd7830ab0790b487cbdee7477e6eb6b941d Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 21 Jan 2018 01:32:20 +1000 Subject: RenderBase: Force a pipeline flush when drawing the XFB to the host Since we use the common pipelines here and draw vertices if a batch is currently being built by the vertex loader, we end up trampling over its pointer, as we share the buffer with the loader, and it has not been unmapped yet. Force a pipeline flush to avoid this. --- Source/Core/VideoCommon/RenderBase.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Source/Core/VideoCommon/RenderBase.cpp') diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 2e42ed984a..d37b6aa07b 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -697,6 +697,11 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, const m_last_xfb_region = xfb_rect; + // Since we use the common pipelines here and draw vertices if a batch is currently being + // built by the vertex loader, we end up trampling over its pointer, as we share the buffer + // with the loader, and it has not been unmapped yet. Force a pipeline flush to avoid this. + g_vertex_manager->Flush(); + // TODO: merge more generic parts into VideoCommon { std::lock_guard guard(m_swap_mutex); -- cgit v1.2.3 From 1adcd47dcbd80e0435d42e61dab3f00a22d1ca38 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Fri, 9 Feb 2018 20:52:25 +1000 Subject: Renderer: Add a base Initialize() method to match Shutdown() --- Source/Core/VideoCommon/RenderBase.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Source/Core/VideoCommon/RenderBase.cpp') diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index d37b6aa07b..241c74c6ec 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -93,6 +93,11 @@ Renderer::Renderer(int backbuffer_width, int backbuffer_height) Renderer::~Renderer() = default; +bool Renderer::Initialize() +{ + return true; +} + void Renderer::Shutdown() { // First stop any framedumping, which might need to dump the last xfb frame. This process -- cgit v1.2.3 From 2644e920cca0fb4cb55d08b2c1920d8595140eb3 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 9 Sep 2017 16:09:24 +1000 Subject: Renderer: Add backbuffer format to base class --- Source/Core/VideoCommon/RenderBase.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/RenderBase.cpp') diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 241c74c6ec..ba60e1636c 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -78,8 +78,10 @@ static float AspectToWidescreen(float aspect) return aspect * ((16.0f / 9.0f) / (4.0f / 3.0f)); } -Renderer::Renderer(int backbuffer_width, int backbuffer_height) - : m_backbuffer_width(backbuffer_width), m_backbuffer_height(backbuffer_height) +Renderer::Renderer(int backbuffer_width, int backbuffer_height, + AbstractTextureFormat backbuffer_format) + : m_backbuffer_width(backbuffer_width), m_backbuffer_height(backbuffer_height), + m_backbuffer_format(backbuffer_format) { UpdateActiveConfig(); UpdateDrawRectangle(); -- cgit v1.2.3