mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-08-20 09:24:59 -05:00
VideoCommon: avoid assuming global state exists for 'EndUtilityDrawing', use last stored viewport/scissor rect instead
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user