From f57517f1a05db1790f853bf43d6093c19478b4ce Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Sat, 30 May 2015 00:42:45 +1200 Subject: Clean up cached_arraybases. Update VideoSW to new scheme. Move ownership of cached_arraybases from CPMemory to VertexLoaderManager to better match it usage. --- Source/Core/VideoBackends/Software/CPMemLoader.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'Source/Core/VideoBackends/Software/CPMemLoader.cpp') diff --git a/Source/Core/VideoBackends/Software/CPMemLoader.cpp b/Source/Core/VideoBackends/Software/CPMemLoader.cpp index 39627f1953..d1ebe6cc87 100644 --- a/Source/Core/VideoBackends/Software/CPMemLoader.cpp +++ b/Source/Core/VideoBackends/Software/CPMemLoader.cpp @@ -48,7 +48,6 @@ void SWLoadCPReg(u32 sub_cmd, u32 value) // Pointers to vertex arrays in GC RAM case 0xA0: g_main_cp_state.array_bases[sub_cmd & 0xF] = value; - cached_arraybases[sub_cmd & 0xF] = Memory::GetPointer(value); break; case 0xB0: -- cgit v1.2.3 From 7df69829732745d98b843d37d68a65920d1d883b Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Sat, 30 May 2015 03:58:27 +1200 Subject: Add a dirty flag for arraybases. Only loop through and call getPointers when something has actually changed. Worth about 2-4% speedup un SMG over the previous commit. --- Source/Core/VideoBackends/Software/CPMemLoader.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/VideoBackends/Software/CPMemLoader.cpp') diff --git a/Source/Core/VideoBackends/Software/CPMemLoader.cpp b/Source/Core/VideoBackends/Software/CPMemLoader.cpp index d1ebe6cc87..c33cd2dd0e 100644 --- a/Source/Core/VideoBackends/Software/CPMemLoader.cpp +++ b/Source/Core/VideoBackends/Software/CPMemLoader.cpp @@ -23,11 +23,13 @@ void SWLoadCPReg(u32 sub_cmd, u32 value) case 0x50: g_main_cp_state.vtx_desc.Hex &= ~0x1FFFF; // keep the Upper bits g_main_cp_state.vtx_desc.Hex |= value; + g_main_cp_state.bases_dirty = true; break; case 0x60: g_main_cp_state.vtx_desc.Hex &= 0x1FFFF; // keep the lower 17Bits g_main_cp_state.vtx_desc.Hex |= (u64)value << 17; + g_main_cp_state.bases_dirty = true; break; case 0x70: @@ -48,6 +50,7 @@ void SWLoadCPReg(u32 sub_cmd, u32 value) // Pointers to vertex arrays in GC RAM case 0xA0: g_main_cp_state.array_bases[sub_cmd & 0xF] = value; + g_main_cp_state.bases_dirty = true; break; case 0xB0: -- cgit v1.2.3