summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
authorMai <mai.iam2048@gmail.com>2022-12-29 04:48:24 +0000
committerGitHub <noreply@github.com>2022-12-29 04:48:24 +0000
commit7552deeff4d95d7799c59fe00253a3c1ce86f40b (patch)
treed02963cf983422c73c7672e4a5a14f399d0403c2 /Source/Core/VideoBackends
parent82e5f438f954ad822a25eb3261eb9a5d6972ab7f (diff)
parent7e55cc9e9044df8382367c5fbcf0dddd88a80201 (diff)
Merge pull request #11388 from AdmiralCurtiss/globals-vertexshadermanager
VideoCommon: De-globalize VertexShaderManager class.
Diffstat (limited to 'Source/Core/VideoBackends')
-rw-r--r--Source/Core/VideoBackends/D3D/D3DVertexManager.cpp8
-rw-r--r--Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp14
-rw-r--r--Source/Core/VideoBackends/Metal/MTLStateTracker.mm4
-rw-r--r--Source/Core/VideoBackends/Metal/MTLVertexManager.mm5
-rw-r--r--Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp7
-rw-r--r--Source/Core/VideoBackends/Software/SWVertexLoader.cpp18
-rw-r--r--Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp14
7 files changed, 45 insertions, 25 deletions
diff --git a/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp b/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp
index b3c7012d8b..5b5cf5c941 100644
--- a/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp
+++ b/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp
@@ -264,12 +264,14 @@ void VertexManager::UploadUniforms()
{
auto& system = Core::System::GetInstance();
- if (VertexShaderManager::dirty)
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+ if (vertex_shader_manager.dirty)
{
- UpdateConstantBuffer(m_vertex_constant_buffer.Get(), &VertexShaderManager::constants,
+ UpdateConstantBuffer(m_vertex_constant_buffer.Get(), &vertex_shader_manager.constants,
sizeof(VertexShaderConstants));
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
}
+
if (GeometryShaderManager::dirty)
{
UpdateConstantBuffer(m_geometry_constant_buffer.Get(), &GeometryShaderManager::constants,
diff --git a/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp b/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp
index 3d95c076cc..510955a201 100644
--- a/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp
+++ b/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp
@@ -145,15 +145,18 @@ void VertexManager::UploadUniforms()
void VertexManager::UpdateVertexShaderConstants()
{
- if (!VertexShaderManager::dirty || !ReserveConstantStorage())
+ auto& system = Core::System::GetInstance();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+
+ if (!vertex_shader_manager.dirty || !ReserveConstantStorage())
return;
Renderer::GetInstance()->SetConstantBuffer(1, m_uniform_stream_buffer.GetCurrentGPUPointer());
- std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer(), &VertexShaderManager::constants,
+ std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer(), &vertex_shader_manager.constants,
sizeof(VertexShaderConstants));
m_uniform_stream_buffer.CommitMemory(sizeof(VertexShaderConstants));
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, sizeof(VertexShaderConstants));
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
}
void VertexManager::UpdateGeometryShaderConstants()
@@ -237,12 +240,13 @@ void VertexManager::UploadAllConstants()
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
// Copy the actual data in
std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer() + pixel_constants_offset,
&pixel_shader_manager.constants, sizeof(PixelShaderConstants));
std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer() + vertex_constants_offset,
- &VertexShaderManager::constants, sizeof(VertexShaderConstants));
+ &vertex_shader_manager.constants, sizeof(VertexShaderConstants));
std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer() + geometry_constants_offset,
&GeometryShaderManager::constants, sizeof(GeometryShaderConstants));
@@ -251,7 +255,7 @@ void VertexManager::UploadAllConstants()
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, allocation_size);
// Clear dirty flags
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
GeometryShaderManager::dirty = false;
pixel_shader_manager.dirty = false;
}
diff --git a/Source/Core/VideoBackends/Metal/MTLStateTracker.mm b/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
index 60c7dd19df..c5405246b4 100644
--- a/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
+++ b/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
@@ -836,7 +836,9 @@ void Metal::StateTracker::PrepareRender()
{
m_flags.has_gx_vs_uniform = true;
Map map = Allocate(UploadBuffer::Uniform, sizeof(VertexShaderConstants), AlignMask::Uniform);
- memcpy(map.cpu_buffer, &VertexShaderManager::constants, sizeof(VertexShaderConstants));
+ auto& system = Core::System::GetInstance();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+ memcpy(map.cpu_buffer, &vertex_shader_manager.constants, sizeof(VertexShaderConstants));
SetVertexBufferNow(1, map.gpu_buffer, map.gpu_offset);
if (pipe->UsesFragmentBuffer(1))
SetFragmentBufferNow(1, map.gpu_buffer, map.gpu_offset);
diff --git a/Source/Core/VideoBackends/Metal/MTLVertexManager.mm b/Source/Core/VideoBackends/Metal/MTLVertexManager.mm
index df86461ae3..69ec48552b 100644
--- a/Source/Core/VideoBackends/Metal/MTLVertexManager.mm
+++ b/Source/Core/VideoBackends/Metal/MTLVertexManager.mm
@@ -93,9 +93,10 @@ void Metal::VertexManager::UploadUniforms()
{
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
- g_state_tracker->InvalidateUniforms(VertexShaderManager::dirty, GeometryShaderManager::dirty,
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+ g_state_tracker->InvalidateUniforms(vertex_shader_manager.dirty, GeometryShaderManager::dirty,
pixel_shader_manager.dirty);
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
GeometryShaderManager::dirty = false;
pixel_shader_manager.dirty = false;
}
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
index 485d718723..7566611041 100644
--- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
+++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
@@ -223,14 +223,15 @@ void ProgramShaderCache::UploadConstants()
{
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
- if (pixel_shader_manager.dirty || VertexShaderManager::dirty || GeometryShaderManager::dirty)
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+ if (pixel_shader_manager.dirty || vertex_shader_manager.dirty || GeometryShaderManager::dirty)
{
auto buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align);
memcpy(buffer.first, &pixel_shader_manager.constants, sizeof(PixelShaderConstants));
memcpy(buffer.first + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align),
- &VertexShaderManager::constants, sizeof(VertexShaderConstants));
+ &vertex_shader_manager.constants, sizeof(VertexShaderConstants));
memcpy(buffer.first + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align) +
Common::AlignUp(sizeof(VertexShaderConstants), s_ubo_align),
@@ -248,7 +249,7 @@ void ProgramShaderCache::UploadConstants()
sizeof(GeometryShaderConstants));
pixel_shader_manager.dirty = false;
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
GeometryShaderManager::dirty = false;
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, s_ubo_buffer_size);
diff --git a/Source/Core/VideoBackends/Software/SWVertexLoader.cpp b/Source/Core/VideoBackends/Software/SWVertexLoader.cpp
index a38fd163ec..9fbf560ecf 100644
--- a/Source/Core/VideoBackends/Software/SWVertexLoader.cpp
+++ b/Source/Core/VideoBackends/Software/SWVertexLoader.cpp
@@ -10,6 +10,8 @@
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
+#include "Core/System.h"
+
#include "VideoBackends/Software/NativeVertexFormat.h"
#include "VideoBackends/Software/Rasterizer.h"
#include "VideoBackends/Software/SWRenderer.h"
@@ -205,15 +207,19 @@ void SWVertexLoader::ParseVertex(const PortableVertexDeclaration& vdec, int inde
}
if (!vdec.normals[1].enable)
{
- m_vertex.normal[1][0] = VertexShaderManager::constants.cached_tangent[0];
- m_vertex.normal[1][1] = VertexShaderManager::constants.cached_tangent[1];
- m_vertex.normal[1][2] = VertexShaderManager::constants.cached_tangent[2];
+ auto& system = Core::System::GetInstance();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+ m_vertex.normal[1][0] = vertex_shader_manager.constants.cached_tangent[0];
+ m_vertex.normal[1][1] = vertex_shader_manager.constants.cached_tangent[1];
+ m_vertex.normal[1][2] = vertex_shader_manager.constants.cached_tangent[2];
}
if (!vdec.normals[2].enable)
{
- m_vertex.normal[2][0] = VertexShaderManager::constants.cached_binormal[0];
- m_vertex.normal[2][1] = VertexShaderManager::constants.cached_binormal[1];
- m_vertex.normal[2][2] = VertexShaderManager::constants.cached_binormal[2];
+ auto& system = Core::System::GetInstance();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+ m_vertex.normal[2][0] = vertex_shader_manager.constants.cached_binormal[0];
+ m_vertex.normal[2][1] = vertex_shader_manager.constants.cached_binormal[1];
+ m_vertex.normal[2][2] = vertex_shader_manager.constants.cached_binormal[2];
}
ParseColorAttributes(&m_vertex, src, vdec);
diff --git a/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp b/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
index c01335d85a..86b2e361ef 100644
--- a/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
@@ -204,17 +204,20 @@ void VertexManager::UploadUniforms()
void VertexManager::UpdateVertexShaderConstants()
{
- if (!VertexShaderManager::dirty || !ReserveConstantStorage())
+ auto& system = Core::System::GetInstance();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+
+ if (!vertex_shader_manager.dirty || !ReserveConstantStorage())
return;
StateTracker::GetInstance()->SetGXUniformBuffer(
UBO_DESCRIPTOR_SET_BINDING_VS, m_uniform_stream_buffer->GetBuffer(),
m_uniform_stream_buffer->GetCurrentOffset(), sizeof(VertexShaderConstants));
- std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer(), &VertexShaderManager::constants,
+ std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer(), &vertex_shader_manager.constants,
sizeof(VertexShaderConstants));
m_uniform_stream_buffer->CommitMemory(sizeof(VertexShaderConstants));
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, sizeof(VertexShaderConstants));
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
}
void VertexManager::UpdateGeometryShaderConstants()
@@ -289,6 +292,7 @@ void VertexManager::UploadAllConstants()
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
// Update bindings
StateTracker::GetInstance()->SetGXUniformBuffer(
@@ -308,7 +312,7 @@ void VertexManager::UploadAllConstants()
std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer() + pixel_constants_offset,
&pixel_shader_manager.constants, sizeof(PixelShaderConstants));
std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer() + vertex_constants_offset,
- &VertexShaderManager::constants, sizeof(VertexShaderConstants));
+ &vertex_shader_manager.constants, sizeof(VertexShaderConstants));
std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer() + geometry_constants_offset,
&GeometryShaderManager::constants, sizeof(GeometryShaderConstants));
@@ -317,7 +321,7 @@ void VertexManager::UploadAllConstants()
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, allocation_size);
// Clear dirty flags
- VertexShaderManager::dirty = false;
+ vertex_shader_manager.dirty = false;
GeometryShaderManager::dirty = false;
pixel_shader_manager.dirty = false;
}