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
This commit is contained in:
nitsuja 2012-01-01 13:52:31 -08:00 committed by skidau
parent 2be579e8ba
commit ae242e5675
2 changed files with 24 additions and 3 deletions

View File

@ -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)

View File

@ -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
}