mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
VideoCommon: De-globalize GeometryShaderManager class.
This commit is contained in:
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user