@@ -320,9 +320,10 @@ void VertexManagerBase::InvalidateConstants()
{
auto& system = Core::System::GetInstance();
auto& vertex_shader_manager = system.GetVertexShaderManager();
auto& geometry_shader_manager = system.GetGeometryShaderManager();
auto& pixel_shader_manager = system.GetPixelShaderManager();
vertex_shader_manager.dirty = true;
GeometryShaderManager::dirty = true;
geometry_shader_manager.dirty = true;
pixel_shader_manager.dirty = true;
}

@@ -487,6 +488,7 @@ void VertexManagerBase::Flush()

auto& system = Core::System::GetInstance();
auto& pixel_shader_manager = system.GetPixelShaderManager();
auto& geometry_shader_manager = system.GetGeometryShaderManager();
auto& vertex_shader_manager = system.GetVertexShaderManager();

CalculateBinormals(VertexLoaderManager::GetCurrentVertexFormat());
@@ -566,7 +568,7 @@ void VertexManagerBase::Flush()
g_texture_cache->BindTextures(used_textures);

// Now we can upload uniforms, as nothing else will override them.
GeometryShaderManager::SetConstants(m_current_primitive_type);
geometry_shader_manager.SetConstants(m_current_primitive_type);
pixel_shader_manager.SetConstants();
UploadUniforms();

@@ -329,7 +329,7 @@ void VideoBackendBase::InitializeShared()
BPInit();
VertexLoaderManager::Init();
system.GetVertexShaderManager().Init();
GeometryShaderManager::Init();
system.GetGeometryShaderManager().Init();
system.GetPixelShaderManager().Init();
TMEM::Init();

@@ -79,7 +79,7 @@ void VideoCommon_DoState(PointerWrap& p)
system.GetVertexShaderManager().DoState(p);
p.DoMarker("VertexShaderManager");

GeometryShaderManager::DoState(p);
system.GetGeometryShaderManager().DoState(p);
p.DoMarker("GeometryShaderManager");

g_vertex_manager->DoState(p);
@@ -28,7 +28,8 @@ static void XFMemWritten(VertexShaderManager& vertex_shader_manager, u32 transfe
vertex_shader_manager.InvalidateXFRange(baseAddress, baseAddress + transferSize);
}

static void XFRegWritten(VertexShaderManager& vertex_shader_manager, u32 address, u32 value)
static void XFRegWritten(Core::System& system, VertexShaderManager& vertex_shader_manager,
u32 address, u32 value)
{
if (address >= XFMEM_REGISTERS_START && address < XFMEM_REGISTERS_END)
{
@@ -119,14 +120,11 @@ static void XFRegWritten(VertexShaderManager& vertex_shader_manager, u32 address
case XFMEM_SETVIEWPORT + 3:
case XFMEM_SETVIEWPORT + 4:
case XFMEM_SETVIEWPORT + 5:
{
auto& system = Core::System::GetInstance();
g_vertex_manager->Flush();
vertex_shader_manager.SetViewportChanged();
system.GetPixelShaderManager().SetViewportChanged();
GeometryShaderManager::SetViewportChanged();
system.GetGeometryShaderManager().SetViewportChanged();
break;
}

case XFMEM_SETPROJECTION:
case XFMEM_SETPROJECTION + 1:
@@ -137,7 +135,7 @@ static void XFRegWritten(VertexShaderManager& vertex_shader_manager, u32 address
case XFMEM_SETPROJECTION + 6:
g_vertex_manager->Flush();
vertex_shader_manager.SetProjectionChanged();
GeometryShaderManager::SetProjectionChanged();
system.GetGeometryShaderManager().SetProjectionChanged();
break;

case XFMEM_SETNUMTEXGENS: // GXSetNumTexGens
@@ -249,7 +247,7 @@ void LoadXFReg(u16 base_address, u8 transfer_size, const u8* data)
{
const u32 value = Common::swap32(data);

XFRegWritten(vertex_shader_manager, address, value);
XFRegWritten(system, vertex_shader_manager, address, value);
((u32*)&xfmem)[address] = value;

data += 4;