Save more of the GPU's state, fix a crash.

Well, ReapplyGfxState() seems kinda dangerous now...
This commit is contained in:
Unknown W. Brackets 2012-12-29 11:41:33 -08:00
parent 1d9f27f3e3
commit ea9f0be28a
5 changed files with 13 additions and 2 deletions

View File

@ -33,9 +33,11 @@ void __GeDoState(PointerWrap &p)
{
p.Do(gstate);
p.Do(gstate_c);
p.Do(gpuStats);
ReapplyGfxState();
gpu->InvalidateCache(0, -1);
gpu->DoState(p);
p.DoMarker("sceGe");
}

View File

@ -1057,7 +1057,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) {
break;
default:
DEBUG_LOG(G3D,"DL Unknown: %08x @ %08x", op, currentList->pc);
DEBUG_LOG(G3D,"DL Unknown: %08x @ %08x", op, currentList == NULL ? 0 : currentList->pc);
break;
}
}

View File

@ -117,4 +117,10 @@ bool GPUCommon::ProcessDLQueue()
void GPUCommon::PreExecuteOp(u32 op, u32 diff) {
// Nothing to do
}
}
void GPUCommon::DoState(PointerWrap &p) {
p.Do(dlIdGenerator);
p.Do<DisplayList>(dlQueue);
p.DoMarker("GPUCommon");
}

View File

@ -19,6 +19,7 @@ public:
virtual void UpdateStall(int listid, u32 newstall);
virtual u32 EnqueueList(u32 listpc, u32 stall, bool head);
virtual int listStatus(int listid);
virtual void DoState(PointerWrap &p);
protected:
typedef std::deque<DisplayList> DisplayListQueue;

View File

@ -18,6 +18,7 @@
#pragma once
#include "../Globals.h"
#include "../Common/ChunkFile.h"
#include <deque>
enum DisplayListStatus
@ -75,6 +76,7 @@ public:
virtual void DeviceLost() = 0;
virtual void Flush() = 0;
virtual void DoState(PointerWrap &p) = 0;
// Debugging
virtual void DumpNextFrame() = 0;