From 076392a0f65fa11b8c3475b762b8b9794057ae11 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Fri, 12 Nov 2021 11:48:26 -0800 Subject: VideoCommon: Rework scissor handling This increases accuracy, fixing the white rendering in Major Minor's Majestic March. However, the hardware backends can only have one viewport and scissor rectangle at a time, while sometimes multiple are needed to accurately emulate what is happening. If possible, this will need to be fixed later. --- Source/Core/VideoCommon/RenderBase.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/RenderBase.cpp') diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 9d3cfedbd3..6c369621b3 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -160,8 +160,7 @@ void Renderer::EndUtilityDrawing() { // Reset framebuffer/scissor/viewport. Pipeline will be reset at next draw. g_framebuffer_manager->BindEFBFramebuffer(); - BPFunctions::SetScissor(); - BPFunctions::SetViewport(); + BPFunctions::SetScissorAndViewport(); } void Renderer::SetFramebuffer(AbstractFramebuffer* framebuffer) @@ -543,8 +542,7 @@ void Renderer::CheckForConfigChanges() // Viewport and scissor rect have to be reset since they will be scaled differently. if (changed_bits & CONFIG_CHANGE_BIT_TARGET_SIZE) { - BPFunctions::SetViewport(); - BPFunctions::SetScissor(); + BPFunctions::SetScissorAndViewport(); } // Stereo mode change requires recompiling our post processing pipeline and imgui pipelines for -- cgit v1.2.3 From f3eff70e2fda8ad0894f34336584f331ab989b68 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Sat, 27 Nov 2021 17:09:55 -0800 Subject: Implement ImGui window for scissor rectangles This is mainly for debugging, and is only exposed by manually editing the configuration. --- Source/Core/VideoCommon/RenderBase.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/VideoCommon/RenderBase.cpp') diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 6c369621b3..d895d648ed 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -627,6 +627,9 @@ void Renderer::DrawDebugText() if (g_ActiveConfig.bOverlayProjStats) g_stats.DisplayProj(); + if (g_ActiveConfig.bOverlayScissorStats) + g_stats.DisplayScissor(); + const std::string profile_output = Common::Profiler::ToString(); if (!profile_output.empty()) ImGui::TextUnformatted(profile_output.c_str()); -- cgit v1.2.3