diff options
Diffstat (limited to 'Source/Core/VideoCommon/AbstractGfx.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/AbstractGfx.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/Source/Core/VideoCommon/AbstractGfx.cpp b/Source/Core/VideoCommon/AbstractGfx.cpp index 0e7e05e0f0..3e31468f78 100644 --- a/Source/Core/VideoCommon/AbstractGfx.cpp +++ b/Source/Core/VideoCommon/AbstractGfx.cpp @@ -34,10 +34,15 @@ void AbstractGfx::BeginUtilityDrawing() void AbstractGfx::EndUtilityDrawing() { - // Reset framebuffer/scissor/viewport. Pipeline will be reset at next draw. + // Reset framebuffer. Pipeline will be reset at next draw. g_framebuffer_manager->BindEFBFramebuffer(); - BPFunctions::SetScissorAndViewport(g_framebuffer_manager.get(), bpmem.scissorTL, bpmem.scissorBR, - bpmem.scissorOffset, xfmem.viewport); + + // Reset our viewport and scissor to the last stored value + SetViewport(m_viewport_and_scissor.viewport_x, m_viewport_and_scissor.viewport_y, + m_viewport_and_scissor.viewport_width, m_viewport_and_scissor.viewport_height, + m_viewport_and_scissor.viewport_near_depth, + m_viewport_and_scissor.viewport_far_depth); + SetScissorRect(m_viewport_and_scissor.scissor_rect); } void AbstractGfx::SetFramebuffer(AbstractFramebuffer* framebuffer) @@ -87,6 +92,11 @@ void AbstractGfx::ClearRegion(const MathUtil::Rectangle<int>& target_rc, bool co EndUtilityDrawing(); } +void AbstractGfx::StoreViewportAndScissor(const ViewportAndScissor& viewport_and_scissor) +{ + m_viewport_and_scissor = viewport_and_scissor; +} + void AbstractGfx::SetViewportAndScissor(const MathUtil::Rectangle<int>& rect, float min_depth, float max_depth) { |
