diff options
| author | Stenzek <stenzek@gmail.com> | 2018-01-21 22:12:32 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2018-02-20 00:49:32 +1000 |
| commit | c1b39ecc582d5f6e7716f69644fbd54e53be538d (patch) | |
| tree | 14caf3385e509d0ff29c9a9b122179e648f7b781 /Source/Core/VideoBackends | |
| parent | 5359396099dd09583a155dbf4c6bd04df0a97582 (diff) | |
BPFunctions: Move upscaling of scissor rect to VideoCommon
Diffstat (limited to 'Source/Core/VideoBackends')
| -rw-r--r-- | Source/Core/VideoBackends/D3D/Render.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D/Render.h | 2 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 15 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.h | 2 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/Renderer.cpp | 10 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/Renderer.h | 2 |
6 files changed, 11 insertions, 26 deletions
diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index 28c317d72b..1e6e7d5290 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -258,10 +258,10 @@ bool Renderer::CheckForResize() return false; } -void Renderer::SetScissorRect(const EFBRectangle& rc) +void Renderer::SetScissorRect(const MathUtil::Rectangle<int>& rc) { - TargetRectangle trc = ConvertEFBRectangle(rc); - D3D::context->RSSetScissorRects(1, trc.AsRECT()); + const RECT rect = {rc.left, rc.top, rc.right, rc.bottom}; + D3D::context->RSSetScissorRects(1, &rect); } // This function allows the CPU to directly access the EFB. diff --git a/Source/Core/VideoBackends/D3D/Render.h b/Source/Core/VideoBackends/D3D/Render.h index 63bc8d5a53..986d80c3ce 100644 --- a/Source/Core/VideoBackends/D3D/Render.h +++ b/Source/Core/VideoBackends/D3D/Render.h @@ -27,7 +27,7 @@ public: CreateStagingTexture(StagingTextureType type, const TextureConfig& config) override; void SetBlendingState(const BlendingState& state) override; - void SetScissorRect(const EFBRectangle& rc) override; + void SetScissorRect(const MathUtil::Rectangle<int>& rc) override; void SetRasterizationState(const RasterizationState& state) override; void SetDepthState(const DepthState& state) override; void SetTexture(u32 index, const AbstractTexture* texture) override; diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 0322fe99d8..22bfd58982 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -863,20 +863,9 @@ TargetRectangle Renderer::ConvertEFBRectangle(const EFBRectangle& rc) return result; } -// Function: This function handles the OpenGL glScissor() function -// ---------------------------- -// Call browser: OpcodeDecoding.cpp ExecuteDisplayList > Decode() > LoadBPReg() -// case 0x52 > SetScissorRect() -// ---------------------------- -// bpmem.scissorTL.x, y = 342x342 -// bpmem.scissorBR.x, y = 981x821 -// 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 EFBRectangle& rc) +void Renderer::SetScissorRect(const MathUtil::Rectangle<int>& rc) { - TargetRectangle trc = ConvertEFBRectangle(rc); - glScissor(trc.left, trc.bottom, trc.GetWidth(), trc.GetHeight()); + glScissor(rc.left, rc.bottom, rc.GetWidth(), rc.GetHeight()); } void ClearEFBCache() diff --git a/Source/Core/VideoBackends/OGL/Render.h b/Source/Core/VideoBackends/OGL/Render.h index 8efde3a2a5..68e173f568 100644 --- a/Source/Core/VideoBackends/OGL/Render.h +++ b/Source/Core/VideoBackends/OGL/Render.h @@ -91,7 +91,7 @@ public: CreateStagingTexture(StagingTextureType type, const TextureConfig& config) override; void SetBlendingState(const BlendingState& state) override; - void SetScissorRect(const EFBRectangle& rc) override; + void SetScissorRect(const MathUtil::Rectangle<int>& rc) override; void SetRasterizationState(const RasterizationState& state) override; void SetDepthState(const DepthState& state) override; void SetTexture(u32 index, const AbstractTexture* texture) override; diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp index 7a882217cb..413f4bb750 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp +++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp @@ -899,14 +899,10 @@ void Renderer::SetInterlacingMode() { } -void Renderer::SetScissorRect(const EFBRectangle& rc) +void Renderer::SetScissorRect(const MathUtil::Rectangle<int>& rc) { - TargetRectangle target_rc = ConvertEFBRectangle(rc); - - VkRect2D scissor = { - {target_rc.left, target_rc.top}, - {static_cast<uint32_t>(target_rc.GetWidth()), static_cast<uint32_t>(target_rc.GetHeight())}}; - + VkRect2D scissor = {{rc.left, rc.top}, + {static_cast<u32>(rc.GetWidth()), static_cast<u32>(rc.GetHeight())}}; StateTracker::GetInstance()->SetScissor(scissor); } diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.h b/Source/Core/VideoBackends/Vulkan/Renderer.h index 88102ecefd..d5a2e9ae1d 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.h +++ b/Source/Core/VideoBackends/Vulkan/Renderer.h @@ -60,7 +60,7 @@ public: void RestoreAPIState() override; void SetBlendingState(const BlendingState& state) override; - void SetScissorRect(const EFBRectangle& rc) override; + void SetScissorRect(const MathUtil::Rectangle<int>& rc) override; void SetRasterizationState(const RasterizationState& state) override; void SetDepthState(const DepthState& state) override; void SetTexture(u32 index, const AbstractTexture* texture) override; |
