summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2008-08-24 15:46:08 +0000
committerhrydgard <hrydgard@gmail.com>2008-08-24 15:46:08 +0000
commitf44a06465ab2d05c6db793e02aa0aba787bafdda (patch)
tree79c1965524996469cff5443c0e266af249e684b2 /Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp
parente3d7c44a8e42a1c44e1d75bd159fdba825af210e (diff)
Change some project settings. Reorganize the symbol database code, step 1/2.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@292 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp b/Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp
index 914acd7f29..d9bdc337da 100644
--- a/Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp
+++ b/Source/Plugins/Plugin_VideoDX9/Src/OpcodeDecoding.cpp
@@ -38,6 +38,14 @@ extern int FAKE_GetFifoSize();
CDataReader_Fifo g_fifoReader;
+template <class T>
+void Xchg(T& a, T&b)
+{
+ T c = a;
+ a = b;
+ b = c;
+}
+
void ExecuteDisplayList(u32 address, u32 size)
{
IDataReader* pOldReader = g_pDataReader;
@@ -46,11 +54,24 @@ void ExecuteDisplayList(u32 address, u32 size)
CDataReader_Memory memoryReader(address);
g_pDataReader = &memoryReader;
+ // temporarily swap dl and non-dl(small "hack" for the stats)
+ Xchg(stats.thisFrame.numDLPrims,stats.thisFrame.numPrims);
+ Xchg(stats.thisFrame.numXFLoadsInDL,stats.thisFrame.numXFLoads);
+ Xchg(stats.thisFrame.numCPLoadsInDL,stats.thisFrame.numCPLoads);
+ Xchg(stats.thisFrame.numBPLoadsInDL,stats.thisFrame.numBPLoads);
+
while((memoryReader.GetReadAddress() - address) < size)
{
Decode();
}
- INCSTAT(stats.numDListsAlive);
+
+ // un-swap
+ Xchg(stats.thisFrame.numDLPrims,stats.thisFrame.numPrims);
+ Xchg(stats.thisFrame.numXFLoadsInDL,stats.thisFrame.numXFLoads);
+ Xchg(stats.thisFrame.numCPLoadsInDL,stats.thisFrame.numCPLoads);
+ Xchg(stats.thisFrame.numBPLoadsInDL,stats.thisFrame.numBPLoads);
+
+ INCSTAT(stats.numDListsCalled);
// reset to the old reader
g_pDataReader = pOldReader;
}