summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexLoaderManager.cpp
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2022-05-17 13:58:54 -0700
committerPokechu22 <Pokechu022@gmail.com>2022-05-18 14:43:14 -0700
commit8df55b492c52401f88393295479d6fbeba92ad9b (patch)
tree9fd3d69e23b597bb3ef6fc52f4bb3f20cf0538e3 /Source/Core/VideoCommon/VertexLoaderManager.cpp
parent38a75f6a49706840edf7a6f5b94e224468ebbabd (diff)
Show a panic alert if the CP matrix indices don't match the XF matrix indices
This almost certainly never happens, but if it does we want to know.
Diffstat (limited to 'Source/Core/VideoCommon/VertexLoaderManager.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexLoaderManager.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/VertexLoaderManager.cpp b/Source/Core/VideoCommon/VertexLoaderManager.cpp
index eea5183a81..f3fc4d9e7e 100644
--- a/Source/Core/VideoCommon/VertexLoaderManager.cpp
+++ b/Source/Core/VideoCommon/VertexLoaderManager.cpp
@@ -321,6 +321,18 @@ static void CheckCPConfiguration(int vtx_attr_group)
// Don't bail out, though; we can still render something successfully
// (real hardware seems to hang in this case, though)
}
+
+ if (g_main_cp_state.matrix_index_a.Hex != xfmem.MatrixIndexA.Hex ||
+ g_main_cp_state.matrix_index_b.Hex != xfmem.MatrixIndexB.Hex)
+ {
+ PanicAlertFmt("Mismatched matrix index configuration between CP and XF stages - "
+ "index A: {:08x}/{:08x}, index B {:08x}/{:08x}. "
+ "Please report on the issue tracker.",
+ g_main_cp_state.matrix_index_a.Hex, xfmem.MatrixIndexA.Hex,
+ g_main_cp_state.matrix_index_b.Hex, xfmem.MatrixIndexB.Hex);
+ DolphinAnalytics::Instance().ReportGameQuirk(
+ GameQuirk::MISMATCHED_GPU_MATRIX_INDICES_BETWEEN_CP_AND_XF);
+ }
}
int RunVertices(int vtx_attr_group, OpcodeDecoder::Primitive primitive, int count, DataReader src,