Skip to content

Commit

Permalink
Allow the new optimization through redundant VADDR instructions, very…
Browse files Browse the repository at this point in the history
… common
  • Loading branch information
hrydgard committed Oct 3, 2023
1 parent 3aa0f5b commit 200575b
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions GPU/GPUCommonHW.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1051,20 +1051,25 @@ void GPUCommonHW::Execute_Prim(u32 op, u32 diff) {
{
uint32_t diff = data ^ vertexType;
// don't mask upper bits, vertexType is unmasked
if (diff & vtypeCheckMask) {
goto bail;
} else if (data != vertexType) {
if (diff) {
if (diff & vtypeCheckMask)
goto bail;
canExtend = false; // TODO: Might support extending between some vertex types in the future.
vertexType = data;
vertTypeID = GetVertTypeID(vertexType, gstate.getUVGenMode(), g_Config.bSoftwareSkinning);
}
break;
}
case GE_CMD_VADDR:
canExtend = false; // TODO: See if we can do a more lenient check.
{
gstate.cmdmem[GE_CMD_VADDR] = data;
gstate_c.vertexAddr = gstate_c.getRelativeAddress(data & 0x00FFFFFF);
uint32_t newAddr = gstate_c.getRelativeAddress(data & 0x00FFFFFF);
if (gstate_c.vertexAddr != newAddr) {
canExtend = false;
gstate_c.vertexAddr = newAddr;
}
break;
}
case GE_CMD_IADDR:
gstate.cmdmem[GE_CMD_IADDR] = data;
gstate_c.indexAddr = gstate_c.getRelativeAddress(data & 0x00FFFFFF);
Expand Down

0 comments on commit 200575b

Please sign in to comment.