Re-enabled the superVU optimization (It had problems with FFX on non SSE4 cpus, likely a bug in AssignVFRegs).

To make up for the speed loss in Tekken5 and Persona4 the vu cache size is now bigger.
This means another 10% more speed for Tekken, and a whooping 30% for Persona :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@524 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2009-02-18 13:35:55 +00:00
parent ec3a17d9cc
commit bee40a2948

View File

@ -50,7 +50,7 @@ extern void iDumpVU1Registers();
// SuperVURec optimization options, uncomment only for debugging purposes
#define SUPERVU_CACHING // vu programs are saved and queried via memcompare (should be no reason to disable this)
#define SUPERVU_WRITEBACKS // don't flush the writebacks after every block
//#define SUPERVU_X86CACHING // use x86reg caching (faster) (not really. rather lots slower :p (rama) )
#define SUPERVU_X86CACHING // use x86reg caching (faster) (not really. rather lots slower :p (rama) )
#define SUPERVU_VIBRANCHDELAY // when integers are modified right before a branch that uses the integer,
// the old integer value is used in the branch
// fixes kh2
@ -450,8 +450,9 @@ void __fastcall SuperVUClear(u32 startpc, u32 size, int vuindex)
#ifdef SUPERVU_CACHING
list<VuFunctionHeader*>* plist = &s_plistCachedHeaders[vuindex][(*it)->startpc/8];
plist->push_back(*it);
if( plist->size() > 10 ) {
if( plist->size() > 30 ) {
// list is too big, delete
//SysPrintf("Performance warning: deleting cached VU programm!\n");
delete plist->front();
plist->pop_front();
}
@ -1899,7 +1900,7 @@ void VuBaseBlock::AssignVFRegs()
for(i = 1; i >= 0; --i) {
_VURegsNum* regs = itinst->regs+i;
#ifdef SUPERVU_X86CACHING
// redo the counters so that the proper regs are released
for(int j = 0; j < XMMREGS; ++j) {
if( xmmregs[j].inuse ) {
@ -1950,7 +1951,6 @@ void VuBaseBlock::AssignVFRegs()
}
}
}
#endif //SUPERVU_X86CACHING
if( regs->VFread0 ) _addNeededVFtoXMMreg(regs->VFread0);
if( regs->VFread1 ) _addNeededVFtoXMMreg(regs->VFread1);