summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2021-11-12 14:32:17 -0800
committerPokechu22 <Pokechu022@gmail.com>2022-04-16 10:26:11 -0700
commit4595b89ad80ce2384d188de802ee03a183eb5905 (patch)
tree04eb2862f3ea3d20c8320899f3e7f9dcb4b7bdeb /Source/Core
parentb85b35d5ea6af0dbd7ea74b47e2564a805d9bfe5 (diff)
VideoCommon: Remove bSupportsOversizedViewports
I think this is a relic of D3D9. D3D11 and D3D12 seem to work fine without it. Plus, ViewportCorrectionMatrix just didn't work correctly (at least with the viewports being generated by the new scissor code).
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/DolphinAnalytics.cpp1
-rw-r--r--Source/Core/VideoBackends/D3D/D3DMain.cpp1
-rw-r--r--Source/Core/VideoBackends/D3D12/VideoBackend.cpp1
-rw-r--r--Source/Core/VideoBackends/Null/NullBackend.cpp1
-rw-r--r--Source/Core/VideoBackends/OGL/OGLMain.cpp1
-rw-r--r--Source/Core/VideoBackends/Software/SWmain.cpp1
-rw-r--r--Source/Core/VideoBackends/Vulkan/VulkanContext.cpp1
-rw-r--r--Source/Core/VideoCommon/BPFunctions.cpp11
-rw-r--r--Source/Core/VideoCommon/VertexShaderManager.cpp56
-rw-r--r--Source/Core/VideoCommon/VideoConfig.h1
10 files changed, 0 insertions, 75 deletions
diff --git a/Source/Core/Core/DolphinAnalytics.cpp b/Source/Core/Core/DolphinAnalytics.cpp
index d55a5fba5e..5b67fd2c04 100644
--- a/Source/Core/Core/DolphinAnalytics.cpp
+++ b/Source/Core/Core/DolphinAnalytics.cpp
@@ -406,7 +406,6 @@ void DolphinAnalytics::MakePerGameBuilder()
g_Config.backend_info.bSupportsExclusiveFullscreen);
builder.AddData("gpu-has-dual-source-blend", g_Config.backend_info.bSupportsDualSourceBlend);
builder.AddData("gpu-has-primitive-restart", g_Config.backend_info.bSupportsPrimitiveRestart);
- builder.AddData("gpu-has-oversized-viewports", g_Config.backend_info.bSupportsOversizedViewports);
builder.AddData("gpu-has-geometry-shaders", g_Config.backend_info.bSupportsGeometryShaders);
builder.AddData("gpu-has-3d-vision", g_Config.backend_info.bSupports3DVision);
builder.AddData("gpu-has-early-z", g_Config.backend_info.bSupportsEarlyZ);
diff --git a/Source/Core/VideoBackends/D3D/D3DMain.cpp b/Source/Core/VideoBackends/D3D/D3DMain.cpp
index ea11c33676..6fc2c285a1 100644
--- a/Source/Core/VideoBackends/D3D/D3DMain.cpp
+++ b/Source/Core/VideoBackends/D3D/D3DMain.cpp
@@ -79,7 +79,6 @@ void VideoBackend::FillBackendInfo()
g_Config.backend_info.bSupportsExclusiveFullscreen = true;
g_Config.backend_info.bSupportsDualSourceBlend = true;
g_Config.backend_info.bSupportsPrimitiveRestart = true;
- g_Config.backend_info.bSupportsOversizedViewports = false;
g_Config.backend_info.bSupportsGeometryShaders = true;
g_Config.backend_info.bSupportsComputeShaders = false;
g_Config.backend_info.bSupports3DVision = true;
diff --git a/Source/Core/VideoBackends/D3D12/VideoBackend.cpp b/Source/Core/VideoBackends/D3D12/VideoBackend.cpp
index 2ddec74236..197d309332 100644
--- a/Source/Core/VideoBackends/D3D12/VideoBackend.cpp
+++ b/Source/Core/VideoBackends/D3D12/VideoBackend.cpp
@@ -51,7 +51,6 @@ void VideoBackend::FillBackendInfo()
g_Config.backend_info.bSupportsExclusiveFullscreen = true;
g_Config.backend_info.bSupportsDualSourceBlend = true;
g_Config.backend_info.bSupportsPrimitiveRestart = true;
- g_Config.backend_info.bSupportsOversizedViewports = false;
g_Config.backend_info.bSupportsGeometryShaders = true;
g_Config.backend_info.bSupports3DVision = false;
g_Config.backend_info.bSupportsEarlyZ = true;
diff --git a/Source/Core/VideoBackends/Null/NullBackend.cpp b/Source/Core/VideoBackends/Null/NullBackend.cpp
index 0a400fc2fa..5d04a5adac 100644
--- a/Source/Core/VideoBackends/Null/NullBackend.cpp
+++ b/Source/Core/VideoBackends/Null/NullBackend.cpp
@@ -30,7 +30,6 @@ void VideoBackend::InitBackendInfo()
g_Config.backend_info.bSupportsExclusiveFullscreen = true;
g_Config.backend_info.bSupportsDualSourceBlend = true;
g_Config.backend_info.bSupportsPrimitiveRestart = true;
- g_Config.backend_info.bSupportsOversizedViewports = true;
g_Config.backend_info.bSupportsGeometryShaders = true;
g_Config.backend_info.bSupportsComputeShaders = false;
g_Config.backend_info.bSupports3DVision = false;
diff --git a/Source/Core/VideoBackends/OGL/OGLMain.cpp b/Source/Core/VideoBackends/OGL/OGLMain.cpp
index 3e16b86ae8..a286625b34 100644
--- a/Source/Core/VideoBackends/OGL/OGLMain.cpp
+++ b/Source/Core/VideoBackends/OGL/OGLMain.cpp
@@ -78,7 +78,6 @@ void VideoBackend::InitBackendInfo()
g_Config.backend_info.MaxTextureSize = 16384;
g_Config.backend_info.bUsesLowerLeftOrigin = true;
g_Config.backend_info.bSupportsExclusiveFullscreen = false;
- g_Config.backend_info.bSupportsOversizedViewports = true;
g_Config.backend_info.bSupportsGeometryShaders = true;
g_Config.backend_info.bSupportsComputeShaders = false;
g_Config.backend_info.bSupports3DVision = false;
diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp
index 753f869c8e..a74b2eb1c9 100644
--- a/Source/Core/VideoBackends/Software/SWmain.cpp
+++ b/Source/Core/VideoBackends/Software/SWmain.cpp
@@ -68,7 +68,6 @@ void VideoSoftware::InitBackendInfo()
g_Config.backend_info.bSupports3DVision = false;
g_Config.backend_info.bSupportsDualSourceBlend = true;
g_Config.backend_info.bSupportsEarlyZ = true;
- g_Config.backend_info.bSupportsOversizedViewports = true;
g_Config.backend_info.bSupportsPrimitiveRestart = false;
g_Config.backend_info.bSupportsMultithreading = false;
g_Config.backend_info.bSupportsComputeShaders = false;
diff --git a/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp b/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
index 8e0f0ed513..677bedf9d9 100644
--- a/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
@@ -260,7 +260,6 @@ void VulkanContext::PopulateBackendInfo(VideoConfig* config)
{
config->backend_info.api_type = APIType::Vulkan;
config->backend_info.bSupports3DVision = false; // D3D-exclusive.
- config->backend_info.bSupportsOversizedViewports = true; // Assumed support.
config->backend_info.bSupportsEarlyZ = true; // Assumed support.
config->backend_info.bSupportsPrimitiveRestart = true; // Assumed support.
config->backend_info.bSupportsBindingLayout = false; // Assumed support.
diff --git a/Source/Core/VideoCommon/BPFunctions.cpp b/Source/Core/VideoCommon/BPFunctions.cpp
index fe3867c29c..9bc26fb9d2 100644
--- a/Source/Core/VideoCommon/BPFunctions.cpp
+++ b/Source/Core/VideoCommon/BPFunctions.cpp
@@ -153,17 +153,6 @@ void SetViewport()
far_depth = 1.0f - min_depth;
}
- // Clamp to size if oversized not supported. Required for D3D.
- if (!g_ActiveConfig.backend_info.bSupportsOversizedViewports)
- {
- const float max_width = static_cast<float>(g_renderer->GetCurrentFramebuffer()->GetWidth());
- const float max_height = static_cast<float>(g_renderer->GetCurrentFramebuffer()->GetHeight());
- x = std::clamp(x, 0.0f, max_width - 1.0f);
- y = std::clamp(y, 0.0f, max_height - 1.0f);
- width = std::clamp(width, 1.0f, max_width - x);
- height = std::clamp(height, 1.0f, max_height - y);
- }
-
// Lower-left flip.
if (g_ActiveConfig.backend_info.bUsesLowerLeftOrigin)
y = static_cast<float>(g_renderer->GetCurrentFramebuffer()->GetHeight()) - y - height;
diff --git a/Source/Core/VideoCommon/VertexShaderManager.cpp b/Source/Core/VideoCommon/VertexShaderManager.cpp
index 23e94776be..6ba7144345 100644
--- a/Source/Core/VideoCommon/VertexShaderManager.cpp
+++ b/Source/Core/VideoCommon/VertexShaderManager.cpp
@@ -49,55 +49,6 @@ static Common::Matrix44 s_viewportCorrection;
VertexShaderConstants VertexShaderManager::constants;
bool VertexShaderManager::dirty;
-// Viewport correction:
-// In D3D, the viewport rectangle must fit within the render target.
-// Say you want a viewport at (ix, iy) with size (iw, ih),
-// but your viewport must be clamped at (ax, ay) with size (aw, ah).
-// Just multiply the projection matrix with the following to get the same
-// effect:
-// [ (iw/aw) 0 0 ((iw - 2*(ax-ix)) / aw - 1) ]
-// [ 0 (ih/ah) 0 ((-ih + 2*(ay-iy)) / ah + 1) ]
-// [ 0 0 1 0 ]
-// [ 0 0 0 1 ]
-static void ViewportCorrectionMatrix(Common::Matrix44& result)
-{
- int scissorXOff = bpmem.scissorOffset.x * 2;
- int scissorYOff = bpmem.scissorOffset.y * 2;
-
- // TODO: ceil, floor or just cast to int?
- // TODO: Directly use the floats instead of rounding them?
- float intendedX = xfmem.viewport.xOrig - xfmem.viewport.wd - scissorXOff;
- float intendedY = xfmem.viewport.yOrig + xfmem.viewport.ht - scissorYOff;
- float intendedWd = 2.0f * xfmem.viewport.wd;
- float intendedHt = -2.0f * xfmem.viewport.ht;
-
- if (intendedWd < 0.f)
- {
- intendedX += intendedWd;
- intendedWd = -intendedWd;
- }
- if (intendedHt < 0.f)
- {
- intendedY += intendedHt;
- intendedHt = -intendedHt;
- }
-
- // fit to EFB size
- float X = (intendedX >= 0.f) ? intendedX : 0.f;
- float Y = (intendedY >= 0.f) ? intendedY : 0.f;
- float Wd = (X + intendedWd <= EFB_WIDTH) ? intendedWd : (EFB_WIDTH - X);
- float Ht = (Y + intendedHt <= EFB_HEIGHT) ? intendedHt : (EFB_HEIGHT - Y);
-
- result = Common::Matrix44::Identity();
- if (Wd == 0 || Ht == 0)
- return;
-
- result.data[4 * 0 + 0] = intendedWd / Wd;
- result.data[4 * 0 + 3] = (intendedWd - 2.f * (X - intendedX)) / Wd - 1.f;
- result.data[4 * 1 + 1] = intendedHt / Ht;
- result.data[4 * 1 + 3] = (-intendedHt + 2.f * (Y - intendedY)) / Ht + 1.f;
-}
-
void VertexShaderManager::Init()
{
// Initialize state tracking variables
@@ -348,13 +299,6 @@ void VertexShaderManager::SetConstants()
dirty = true;
BPFunctions::SetViewport();
-
- // Update projection if the viewport isn't 1:1 useable
- if (!g_ActiveConfig.backend_info.bSupportsOversizedViewports)
- {
- ViewportCorrectionMatrix(s_viewportCorrection);
- bProjectionChanged = true;
- }
}
if (bProjectionChanged || g_freelook_camera.GetController()->IsDirty())
diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h
index def1435b7f..2ff4d502af 100644
--- a/Source/Core/VideoCommon/VideoConfig.h
+++ b/Source/Core/VideoCommon/VideoConfig.h
@@ -199,7 +199,6 @@ struct VideoConfig final
bool bSupportsExclusiveFullscreen = false;
bool bSupportsDualSourceBlend = false;
bool bSupportsPrimitiveRestart = false;
- bool bSupportsOversizedViewports = false;
bool bSupportsGeometryShaders = false;
bool bSupportsComputeShaders = false;
bool bSupports3DVision = false;