summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/XFStructs.cpp
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/VideoCommon/XFStructs.cpp
parent82e5f438f954ad822a25eb3261eb9a5d6972ab7f (diff)
parent7e55cc9e9044df8382367c5fbcf0dddd88a80201 (diff)
Merge pull request #11388 from AdmiralCurtiss/globals-vertexshadermanager
VideoCommon: De-globalize VertexShaderManager class.
Diffstat (limited to 'Source/Core/VideoCommon/XFStructs.cpp')
-rw-r--r--Source/Core/VideoCommon/XFStructs.cpp40
1 files changed, 23 insertions, 17 deletions
diff --git a/Source/Core/VideoCommon/XFStructs.cpp b/Source/Core/VideoCommon/XFStructs.cpp
index dd88572716..32d5085b76 100644
--- a/Source/Core/VideoCommon/XFStructs.cpp
+++ b/Source/Core/VideoCommon/XFStructs.cpp
@@ -21,13 +21,14 @@
#include "VideoCommon/VertexShaderManager.h"
#include "VideoCommon/XFMemory.h"
-static void XFMemWritten(u32 transferSize, u32 baseAddress)
+static void XFMemWritten(VertexShaderManager& vertex_shader_manager, u32 transferSize,
+ u32 baseAddress)
{
g_vertex_manager->Flush();
- VertexShaderManager::InvalidateXFRange(baseAddress, baseAddress + transferSize);
+ vertex_shader_manager.InvalidateXFRange(baseAddress, baseAddress + transferSize);
}
-static void XFRegWritten(u32 address, u32 value)
+static void XFRegWritten(VertexShaderManager& vertex_shader_manager, u32 address, u32 value)
{
if (address >= XFMEM_REGISTERS_START && address < XFMEM_REGISTERS_END)
{
@@ -61,7 +62,7 @@ static void XFRegWritten(u32 address, u32 value)
case XFMEM_SETNUMCHAN:
if (xfmem.numChan.numColorChans != (value & 3))
g_vertex_manager->Flush();
- VertexShaderManager::SetLightingConfigChanged();
+ vertex_shader_manager.SetLightingConfigChanged();
break;
case XFMEM_SETCHAN0_AMBCOLOR: // Channel Ambient Color
@@ -71,7 +72,7 @@ static void XFRegWritten(u32 address, u32 value)
if (xfmem.ambColor[chan] != value)
{
g_vertex_manager->Flush();
- VertexShaderManager::SetMaterialColorChanged(chan);
+ vertex_shader_manager.SetMaterialColorChanged(chan);
}
break;
}
@@ -83,7 +84,7 @@ static void XFRegWritten(u32 address, u32 value)
if (xfmem.matColor[chan] != value)
{
g_vertex_manager->Flush();
- VertexShaderManager::SetMaterialColorChanged(chan + 2);
+ vertex_shader_manager.SetMaterialColorChanged(chan + 2);
}
break;
}
@@ -94,21 +95,21 @@ static void XFRegWritten(u32 address, u32 value)
case XFMEM_SETCHAN1_ALPHA:
if (((u32*)&xfmem)[address] != (value & 0x7fff))
g_vertex_manager->Flush();
- VertexShaderManager::SetLightingConfigChanged();
+ vertex_shader_manager.SetLightingConfigChanged();
break;
case XFMEM_DUALTEX:
if (xfmem.dualTexTrans.enabled != bool(value & 1))
g_vertex_manager->Flush();
- VertexShaderManager::SetTexMatrixInfoChanged(-1);
+ vertex_shader_manager.SetTexMatrixInfoChanged(-1);
break;
case XFMEM_SETMATRIXINDA:
- VertexShaderManager::SetTexMatrixChangedA(value);
+ vertex_shader_manager.SetTexMatrixChangedA(value);
VertexLoaderManager::g_needs_cp_xf_consistency_check = true;
break;
case XFMEM_SETMATRIXINDB:
- VertexShaderManager::SetTexMatrixChangedB(value);
+ vertex_shader_manager.SetTexMatrixChangedB(value);
VertexLoaderManager::g_needs_cp_xf_consistency_check = true;
break;
@@ -121,7 +122,7 @@ static void XFRegWritten(u32 address, u32 value)
{
auto& system = Core::System::GetInstance();
g_vertex_manager->Flush();
- VertexShaderManager::SetViewportChanged();
+ vertex_shader_manager.SetViewportChanged();
system.GetPixelShaderManager().SetViewportChanged();
GeometryShaderManager::SetViewportChanged();
break;
@@ -135,7 +136,7 @@ static void XFRegWritten(u32 address, u32 value)
case XFMEM_SETPROJECTION + 5:
case XFMEM_SETPROJECTION + 6:
g_vertex_manager->Flush();
- VertexShaderManager::SetProjectionChanged();
+ vertex_shader_manager.SetProjectionChanged();
GeometryShaderManager::SetProjectionChanged();
break;
@@ -153,7 +154,7 @@ static void XFRegWritten(u32 address, u32 value)
case XFMEM_SETTEXMTXINFO + 6:
case XFMEM_SETTEXMTXINFO + 7:
g_vertex_manager->Flush();
- VertexShaderManager::SetTexMatrixInfoChanged(address - XFMEM_SETTEXMTXINFO);
+ vertex_shader_manager.SetTexMatrixInfoChanged(address - XFMEM_SETTEXMTXINFO);
break;
case XFMEM_SETPOSTMTXINFO:
@@ -165,7 +166,7 @@ static void XFRegWritten(u32 address, u32 value)
case XFMEM_SETPOSTMTXINFO + 6:
case XFMEM_SETPOSTMTXINFO + 7:
g_vertex_manager->Flush();
- VertexShaderManager::SetTexMatrixInfoChanged(address - XFMEM_SETPOSTMTXINFO);
+ vertex_shader_manager.SetTexMatrixInfoChanged(address - XFMEM_SETPOSTMTXINFO);
break;
// --------------
@@ -218,6 +219,9 @@ void LoadXFReg(u16 base_address, u8 transfer_size, const u8* data)
end_address = XFMEM_REGISTERS_END;
}
+ auto& system = Core::System::GetInstance();
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
+
// write to XF mem
if (base_address < XFMEM_REGISTERS_START)
{
@@ -230,7 +234,7 @@ void LoadXFReg(u16 base_address, u8 transfer_size, const u8* data)
base_address = XFMEM_REGISTERS_START;
}
- XFMemWritten(xf_mem_transfer_size, xf_mem_base);
+ XFMemWritten(vertex_shader_manager, xf_mem_transfer_size, xf_mem_base);
for (u32 i = 0; i < xf_mem_transfer_size; i++)
{
((u32*)&xfmem)[xf_mem_base + i] = Common::swap32(data);
@@ -245,7 +249,7 @@ void LoadXFReg(u16 base_address, u8 transfer_size, const u8* data)
{
const u32 value = Common::swap32(data);
- XFRegWritten(address, value);
+ XFRegWritten(vertex_shader_manager, address, value);
((u32*)&xfmem)[address] = value;
data += 4;
@@ -272,13 +276,15 @@ void LoadIndexedXF(CPArray array, u32 index, u16 address, u8 size)
newData = (u32*)memory.GetPointer(g_main_cp_state.array_bases[array] +
g_main_cp_state.array_strides[array] * index);
}
+
+ auto& vertex_shader_manager = system.GetVertexShaderManager();
bool changed = false;
for (u32 i = 0; i < size; ++i)
{
if (currData[i] != Common::swap32(newData[i]))
{
changed = true;
- XFMemWritten(size, address);
+ XFMemWritten(vertex_shader_manager, size, address);
break;
}
}