mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 14:49:42 -06:00
Merge pull request #11388 from AdmiralCurtiss/globals-vertexshadermanager
VideoCommon: De-globalize VertexShaderManager class.
This commit is contained in:
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user