diff options
| author | JMC47 <JMC4789@gmail.com> | 2025-12-22 13:30:30 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-22 13:30:30 -0500 |
| commit | 7ec676b452c2d3d7707c1e8e2d5afc2001968d00 (patch) | |
| tree | 850e8ca33e991635bcd6780a71682a6d92fb7195 /Source/Core/VideoCommon/AbstractGfx.cpp | |
| parent | 0e06f5d632744107f0fced36393eff1be1c5ab4e (diff) | |
| parent | a4599a1adda5c1d445b70d0dfe70b50fe3888662 (diff) | |
Merge pull request #14117 from iwubcode/end_utility_drawing
VideoCommon: avoid assuming global state exists for 'EndUtilityDrawing'
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) { |
