mirror of
https://github.com/libretro/ppsspp.git
synced 2024-12-14 04:28:42 +00:00
GPU: Maintain a bit more state in inner-prim loop.
Trying to make dumps properly trigger this optimization, but they still sometimes get flattened and don't.
This commit is contained in:
parent
1517d66d4e
commit
d3db565344
@ -1627,8 +1627,13 @@ void GPUCommon::Execute_Prim(u32 op, u32 diff) {
|
||||
break;
|
||||
}
|
||||
case GE_CMD_VADDR:
|
||||
gstate.cmdmem[data >> 24] = data;
|
||||
gstate_c.vertexAddr = gstate_c.getRelativeAddress(data & 0x00FFFFFF);
|
||||
break;
|
||||
case GE_CMD_IADDR:
|
||||
gstate.cmdmem[data >> 24] = data;
|
||||
gstate_c.indexAddr = gstate_c.getRelativeAddress(data & 0x00FFFFFF);
|
||||
break;
|
||||
case GE_CMD_OFFSETADDR:
|
||||
gstate.cmdmem[GE_CMD_OFFSETADDR] = data;
|
||||
gstate_c.offsetAddr = data << 8;
|
||||
@ -1646,8 +1651,10 @@ void GPUCommon::Execute_Prim(u32 op, u32 diff) {
|
||||
// flip face by indices for triangles
|
||||
cullMode = data & 1;
|
||||
break;
|
||||
case GE_CMD_TEXFLUSH:
|
||||
case GE_CMD_NOP:
|
||||
case GE_CMD_NOP_FF:
|
||||
gstate.cmdmem[data >> 24] = data;
|
||||
break;
|
||||
case GE_CMD_BONEMATRIXNUMBER:
|
||||
gstate.cmdmem[GE_CMD_BONEMATRIXNUMBER] = data;
|
||||
@ -1690,6 +1697,12 @@ void GPUCommon::Execute_Prim(u32 op, u32 diff) {
|
||||
break;
|
||||
}
|
||||
|
||||
case GE_CMD_TEXBUFWIDTH0:
|
||||
case GE_CMD_TEXADDR0:
|
||||
if (data != gstate.cmdmem[data >> 24])
|
||||
goto bail;
|
||||
break;
|
||||
|
||||
default:
|
||||
// All other commands might need a flush or something, stop this inner loop.
|
||||
goto bail;
|
||||
|
Loading…
Reference in New Issue
Block a user