diff options
| author | nitsuja <nitsuja-@hotmail.com> | 2012-01-01 13:52:31 -0800 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2012-05-26 13:18:08 +1000 |
| commit | ae242e5675b71c6c7019b31bde0abd61ba8be875 (patch) | |
| tree | 131a9f47d6938e759fe66132bd6a8b0b6ed2828b /Source/Core | |
| parent | 2be579e8bad372e7a7433a7d6300939ecef4c654 (diff) | |
added some missing VideoBackendHardware data to savestates. I think this makes savestates more stable (fewer "GFX FIFO: Unknown Opcode" errors) in dual core mode.
also added some extra verification markers around here, to potentially give better info on future version mismatches
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/VideoCommon/Src/MainBase.cpp | 8 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/Src/VideoState.cpp | 19 |
2 files changed, 24 insertions, 3 deletions
diff --git a/Source/Core/VideoCommon/Src/MainBase.cpp b/Source/Core/VideoCommon/Src/MainBase.cpp index 4df2361ea9..df29fef606 100644 --- a/Source/Core/VideoCommon/Src/MainBase.cpp +++ b/Source/Core/VideoCommon/Src/MainBase.cpp @@ -186,6 +186,14 @@ void VideoBackendHardware::InitializeShared() void VideoBackendHardware::DoState(PointerWrap& p) { VideoCommon_DoState(p); + p.DoMarker("VideoCommon"); + + p.Do(s_swapRequested); + p.Do(s_efbAccessRequested); + p.Do(s_beginFieldArgs); + p.Do(s_accessEFBArgs); + p.Do(s_AccessEFBResult); + p.DoMarker("VideoBackendHardware"); // Refresh state. if (p.GetMode() == PointerWrap::MODE_READ) diff --git a/Source/Core/VideoCommon/Src/VideoState.cpp b/Source/Core/VideoCommon/Src/VideoState.cpp index 5a677a2460..8b1045b71f 100644 --- a/Source/Core/VideoCommon/Src/VideoState.cpp +++ b/Source/Core/VideoCommon/Src/VideoState.cpp @@ -31,29 +31,42 @@ static void DoState(PointerWrap &p) { // BP Memory p.Do(bpmem); - // CP Memory + p.DoMarker("BP Memory"); + + // CP Memory p.DoArray(arraybases, 16); p.DoArray(arraystrides, 16); p.Do(MatrixIndexA); p.Do(MatrixIndexB); p.Do(g_VtxDesc.Hex); p.DoArray(g_VtxAttr, 8); + p.DoMarker("CP Memory"); // XF Memory p.Do(xfregs); p.DoArray(xfmem, XFMEM_SIZE); - // Texture decoder + p.DoMarker("XF Memory"); + + // Texture decoder p.DoArray(texMem, TMEM_SIZE); + p.DoMarker("texMem"); // FIFO Fifo_DoState(p); + p.DoMarker("Fifo"); CommandProcessor::DoState(p); - PixelEngine::DoState(p); + p.DoMarker("CommandProcessor"); + + PixelEngine::DoState(p); + p.DoMarker("PixelEngine"); // the old way of replaying current bpmem as writes to push side effects to pixel shader manager doesn't really work. PixelShaderManager::DoState(p); + p.DoMarker("PixelShaderManager"); + VertexShaderManager::DoState(p); + p.DoMarker("VertexShaderManager"); // TODO: search for more data that should be saved and add it here } |
