summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-01-21 22:12:32 +1000
committerStenzek <stenzek@gmail.com>2018-02-20 00:49:32 +1000
commitc1b39ecc582d5f6e7716f69644fbd54e53be538d (patch)
tree14caf3385e509d0ff29c9a9b122179e648f7b781 /Source/Core/VideoBackends
parent5359396099dd09583a155dbf4c6bd04df0a97582 (diff)
BPFunctions: Move upscaling of scissor rect to VideoCommon
Diffstat (limited to 'Source/Core/VideoBackends')
-rw-r--r--Source/Core/VideoBackends/D3D/Render.cpp6
-rw-r--r--Source/Core/VideoBackends/D3D/Render.h2
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp15
-rw-r--r--Source/Core/VideoBackends/OGL/Render.h2
-rw-r--r--Source/Core/VideoBackends/Vulkan/Renderer.cpp10
-rw-r--r--Source/Core/VideoBackends/Vulkan/Renderer.h2
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;