summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends')
-rw-r--r--Source/Core/VideoBackends/D3D/D3DVertexManager.cpp7
-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.mm7
-rw-r--r--Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp7
-rw-r--r--Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp14
6 files changed, 33 insertions, 20 deletions
diff --git a/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp b/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp
index 5b5cf5c941..ce41e90e31 100644
--- a/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp
+++ b/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp
@@ -272,11 +272,12 @@ void VertexManager::UploadUniforms()
vertex_shader_manager.dirty = false;
}
- if (GeometryShaderManager::dirty)
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
+ if (geometry_shader_manager.dirty)
{
- UpdateConstantBuffer(m_geometry_constant_buffer.Get(), &GeometryShaderManager::constants,
+ UpdateConstantBuffer(m_geometry_constant_buffer.Get(), &geometry_shader_manager.constants,
sizeof(GeometryShaderConstants));
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
}
auto& pixel_shader_manager = system.GetPixelShaderManager();
diff --git a/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp b/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp
index 510955a201..3ea1008413 100644
--- a/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp
+++ b/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp
@@ -161,15 +161,18 @@ void VertexManager::UpdateVertexShaderConstants()
void VertexManager::UpdateGeometryShaderConstants()
{
- if (!GeometryShaderManager::dirty || !ReserveConstantStorage())
+ auto& system = Core::System::GetInstance();
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
+
+ if (!geometry_shader_manager.dirty || !ReserveConstantStorage())
return;
Renderer::GetInstance()->SetConstantBuffer(2, m_uniform_stream_buffer.GetCurrentGPUPointer());
- std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer(), &GeometryShaderManager::constants,
+ std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer(), &geometry_shader_manager.constants,
sizeof(GeometryShaderConstants));
m_uniform_stream_buffer.CommitMemory(sizeof(GeometryShaderConstants));
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, sizeof(GeometryShaderConstants));
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
}
void VertexManager::UpdatePixelShaderConstants()
@@ -241,6 +244,7 @@ void VertexManager::UploadAllConstants()
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
auto& vertex_shader_manager = system.GetVertexShaderManager();
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
// Copy the actual data in
std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer() + pixel_constants_offset,
@@ -248,7 +252,7 @@ void VertexManager::UploadAllConstants()
std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer() + vertex_constants_offset,
&vertex_shader_manager.constants, sizeof(VertexShaderConstants));
std::memcpy(m_uniform_stream_buffer.GetCurrentHostPointer() + geometry_constants_offset,
- &GeometryShaderManager::constants, sizeof(GeometryShaderConstants));
+ &geometry_shader_manager.constants, sizeof(GeometryShaderConstants));
// Finally, flush buffer memory after copying
m_uniform_stream_buffer.CommitMemory(allocation_size);
@@ -256,7 +260,7 @@ void VertexManager::UploadAllConstants()
// Clear dirty flags
vertex_shader_manager.dirty = false;
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
pixel_shader_manager.dirty = false;
}
diff --git a/Source/Core/VideoBackends/Metal/MTLStateTracker.mm b/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
index c5405246b4..4e24cd737d 100644
--- a/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
+++ b/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
@@ -848,7 +848,9 @@ void Metal::StateTracker::PrepareRender()
if (!m_flags.has_gx_gs_uniform && pipe->UsesVertexBuffer(2))
{
m_flags.has_gx_gs_uniform = true;
- [m_current_render_encoder setVertexBytes:&GeometryShaderManager::constants
+ auto& system = Core::System::GetInstance();
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
+ [m_current_render_encoder setVertexBytes:&geometry_shader_manager.constants
length:sizeof(GeometryShaderConstants)
atIndex:2];
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, sizeof(GeometryShaderConstants));
diff --git a/Source/Core/VideoBackends/Metal/MTLVertexManager.mm b/Source/Core/VideoBackends/Metal/MTLVertexManager.mm
index 69ec48552b..91f1d42eec 100644
--- a/Source/Core/VideoBackends/Metal/MTLVertexManager.mm
+++ b/Source/Core/VideoBackends/Metal/MTLVertexManager.mm
@@ -92,11 +92,12 @@ void Metal::VertexManager::CommitBuffer(u32 num_vertices, u32 vertex_stride, u32
void Metal::VertexManager::UploadUniforms()
{
auto& system = Core::System::GetInstance();
- auto& pixel_shader_manager = system.GetPixelShaderManager();
auto& vertex_shader_manager = system.GetVertexShaderManager();
- g_state_tracker->InvalidateUniforms(vertex_shader_manager.dirty, GeometryShaderManager::dirty,
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
+ auto& pixel_shader_manager = system.GetPixelShaderManager();
+ g_state_tracker->InvalidateUniforms(vertex_shader_manager.dirty, geometry_shader_manager.dirty,
pixel_shader_manager.dirty);
vertex_shader_manager.dirty = false;
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
pixel_shader_manager.dirty = false;
}
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
index 7566611041..b4635c36ec 100644
--- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
+++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
@@ -224,7 +224,8 @@ void ProgramShaderCache::UploadConstants()
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
auto& vertex_shader_manager = system.GetVertexShaderManager();
- if (pixel_shader_manager.dirty || vertex_shader_manager.dirty || GeometryShaderManager::dirty)
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
+ if (pixel_shader_manager.dirty || vertex_shader_manager.dirty || geometry_shader_manager.dirty)
{
auto buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align);
@@ -235,7 +236,7 @@ void ProgramShaderCache::UploadConstants()
memcpy(buffer.first + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align) +
Common::AlignUp(sizeof(VertexShaderConstants), s_ubo_align),
- &GeometryShaderManager::constants, sizeof(GeometryShaderConstants));
+ &geometry_shader_manager.constants, sizeof(GeometryShaderConstants));
s_buffer->Unmap(s_ubo_buffer_size);
glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->m_buffer, buffer.second,
@@ -250,7 +251,7 @@ void ProgramShaderCache::UploadConstants()
pixel_shader_manager.dirty = false;
vertex_shader_manager.dirty = false;
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, s_ubo_buffer_size);
}
diff --git a/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp b/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
index 86b2e361ef..025fa2be29 100644
--- a/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
@@ -222,17 +222,20 @@ void VertexManager::UpdateVertexShaderConstants()
void VertexManager::UpdateGeometryShaderConstants()
{
- if (!GeometryShaderManager::dirty || !ReserveConstantStorage())
+ auto& system = Core::System::GetInstance();
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
+
+ if (!geometry_shader_manager.dirty || !ReserveConstantStorage())
return;
StateTracker::GetInstance()->SetGXUniformBuffer(
UBO_DESCRIPTOR_SET_BINDING_GS, m_uniform_stream_buffer->GetBuffer(),
m_uniform_stream_buffer->GetCurrentOffset(), sizeof(GeometryShaderConstants));
- std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer(), &GeometryShaderManager::constants,
+ std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer(), &geometry_shader_manager.constants,
sizeof(GeometryShaderConstants));
m_uniform_stream_buffer->CommitMemory(sizeof(GeometryShaderConstants));
ADDSTAT(g_stats.this_frame.bytes_uniform_streamed, sizeof(GeometryShaderConstants));
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
}
void VertexManager::UpdatePixelShaderConstants()
@@ -293,6 +296,7 @@ void VertexManager::UploadAllConstants()
auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
auto& vertex_shader_manager = system.GetVertexShaderManager();
+ auto& geometry_shader_manager = system.GetGeometryShaderManager();
// Update bindings
StateTracker::GetInstance()->SetGXUniformBuffer(
@@ -314,7 +318,7 @@ void VertexManager::UploadAllConstants()
std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer() + vertex_constants_offset,
&vertex_shader_manager.constants, sizeof(VertexShaderConstants));
std::memcpy(m_uniform_stream_buffer->GetCurrentHostPointer() + geometry_constants_offset,
- &GeometryShaderManager::constants, sizeof(GeometryShaderConstants));
+ &geometry_shader_manager.constants, sizeof(GeometryShaderConstants));
// Finally, flush buffer memory after copying
m_uniform_stream_buffer->CommitMemory(allocation_size);
@@ -322,7 +326,7 @@ void VertexManager::UploadAllConstants()
// Clear dirty flags
vertex_shader_manager.dirty = false;
- GeometryShaderManager::dirty = false;
+ geometry_shader_manager.dirty = false;
pixel_shader_manager.dirty = false;
}