mirror of https://github.com/PCSX2/pcsx2.git
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:
parent
ec3a17d9cc
commit
bee40a2948
|
@ -50,7 +50,7 @@ extern void iDumpVU1Registers();
|
||||||
// SuperVURec optimization options, uncomment only for debugging purposes
|
// 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_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_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,
|
#define SUPERVU_VIBRANCHDELAY // when integers are modified right before a branch that uses the integer,
|
||||||
// the old integer value is used in the branch
|
// the old integer value is used in the branch
|
||||||
// fixes kh2
|
// fixes kh2
|
||||||
|
@ -450,8 +450,9 @@ void __fastcall SuperVUClear(u32 startpc, u32 size, int vuindex)
|
||||||
#ifdef SUPERVU_CACHING
|
#ifdef SUPERVU_CACHING
|
||||||
list<VuFunctionHeader*>* plist = &s_plistCachedHeaders[vuindex][(*it)->startpc/8];
|
list<VuFunctionHeader*>* plist = &s_plistCachedHeaders[vuindex][(*it)->startpc/8];
|
||||||
plist->push_back(*it);
|
plist->push_back(*it);
|
||||||
if( plist->size() > 10 ) {
|
if( plist->size() > 30 ) {
|
||||||
// list is too big, delete
|
// list is too big, delete
|
||||||
|
//SysPrintf("Performance warning: deleting cached VU programm!\n");
|
||||||
delete plist->front();
|
delete plist->front();
|
||||||
plist->pop_front();
|
plist->pop_front();
|
||||||
}
|
}
|
||||||
|
@ -1899,7 +1900,7 @@ void VuBaseBlock::AssignVFRegs()
|
||||||
for(i = 1; i >= 0; --i) {
|
for(i = 1; i >= 0; --i) {
|
||||||
_VURegsNum* regs = itinst->regs+i;
|
_VURegsNum* regs = itinst->regs+i;
|
||||||
|
|
||||||
#ifdef SUPERVU_X86CACHING
|
|
||||||
// redo the counters so that the proper regs are released
|
// redo the counters so that the proper regs are released
|
||||||
for(int j = 0; j < XMMREGS; ++j) {
|
for(int j = 0; j < XMMREGS; ++j) {
|
||||||
if( xmmregs[j].inuse ) {
|
if( xmmregs[j].inuse ) {
|
||||||
|
@ -1950,7 +1951,6 @@ void VuBaseBlock::AssignVFRegs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //SUPERVU_X86CACHING
|
|
||||||
|
|
||||||
if( regs->VFread0 ) _addNeededVFtoXMMreg(regs->VFread0);
|
if( regs->VFread0 ) _addNeededVFtoXMMreg(regs->VFread0);
|
||||||
if( regs->VFread1 ) _addNeededVFtoXMMreg(regs->VFread1);
|
if( regs->VFread1 ) _addNeededVFtoXMMreg(regs->VFread1);
|
||||||
|
|
Loading…
Reference in New Issue