diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index c46b44c07d..6b452b84c8 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -303,9 +303,10 @@ bool Renderer::CheckForResize() return false; } -void Renderer::SetScissorRect(const TargetRectangle& rc) +void Renderer::SetScissorRect(const EFBRectangle& rc) { - D3D::context->RSSetScissorRects(1, rc.AsRECT()); + TargetRectangle trc = ConvertEFBRectangle(rc); + D3D::context->RSSetScissorRects(1, trc.AsRECT()); } void Renderer::SetColorMask() diff --git a/Source/Core/VideoBackends/D3D/Render.h b/Source/Core/VideoBackends/D3D/Render.h index 11b902c93e..17ac782beb 100644 --- a/Source/Core/VideoBackends/D3D/Render.h +++ b/Source/Core/VideoBackends/D3D/Render.h @@ -13,7 +13,7 @@ public: void SetColorMask(); void SetBlendMode(bool forceUpdate); - void SetScissorRect(const TargetRectangle& rc); + void SetScissorRect(const EFBRectangle& rc); void SetGenerationMode(); void SetDepthMode(); void SetLogicOpMode(); diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 3d22168300..7e31ace68d 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -862,9 +862,10 @@ TargetRectangle Renderer::ConvertEFBRectangle(const EFBRectangle& rc) // Renderer::GetTargetHeight() = the fixed ini file setting // donkopunchstania - it appears scissorBR is the bottom right pixel inside the scissor box // therefore the width and height are (scissorBR + 1) - scissorTL -void Renderer::SetScissorRect(const TargetRectangle& rc) +void Renderer::SetScissorRect(const EFBRectangle& rc) { - glScissor(rc.left, rc.bottom, rc.GetWidth(), rc.GetHeight()); + TargetRectangle trc = g_renderer->ConvertEFBRectangle(rc); + glScissor(trc.left, trc.bottom, trc.GetWidth(), trc.GetHeight()); } void Renderer::SetColorMask() diff --git a/Source/Core/VideoBackends/OGL/Render.h b/Source/Core/VideoBackends/OGL/Render.h index 8f3e37ef1c..2af37e0d93 100644 --- a/Source/Core/VideoBackends/OGL/Render.h +++ b/Source/Core/VideoBackends/OGL/Render.h @@ -46,7 +46,7 @@ public: void SetColorMask() override; void SetBlendMode(bool forceUpdate) override; - void SetScissorRect(const TargetRectangle& rc) override; + void SetScissorRect(const EFBRectangle& rc) override; void SetGenerationMode() override; void SetDepthMode() override; void SetLogicOpMode() override; diff --git a/Source/Core/VideoCommon/BPFunctions.cpp b/Source/Core/VideoCommon/BPFunctions.cpp index 43623a94a8..3cc1764f3b 100644 --- a/Source/Core/VideoCommon/BPFunctions.cpp +++ b/Source/Core/VideoCommon/BPFunctions.cpp @@ -47,8 +47,7 @@ void SetScissor() if (rc.left > rc.right) rc.right = rc.left; if (rc.top > rc.bottom) rc.bottom = rc.top; - TargetRectangle trc = g_renderer->ConvertEFBRectangle(rc); - g_renderer->SetScissorRect(trc); + g_renderer->SetScissorRect(rc); } void SetLineWidth() diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index acb6797264..df176c1346 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -49,7 +49,7 @@ public: virtual void SetColorMask() = 0; virtual void SetBlendMode(bool forceUpdate) = 0; - virtual void SetScissorRect(const TargetRectangle& rc) = 0; + virtual void SetScissorRect(const EFBRectangle& rc) = 0; virtual void SetGenerationMode() = 0; virtual void SetDepthMode() = 0; virtual void SetLogicOpMode() = 0;