mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Limit Projection Matrix Data count to <= 16
This commit is contained in:
parent
58f731d734
commit
c81dc7bd55
1 changed files with 5 additions and 4 deletions
|
@ -1296,7 +1296,7 @@ void GPUCommon::Execute_ProjMtxNum(u32 op, u32 diff) {
|
|||
}
|
||||
|
||||
const int count = i;
|
||||
gstate.projmtxnum = (GE_CMD_PROJMATRIXNUMBER << 24) | ((op + count) & 0xF);
|
||||
gstate.projmtxnum = (GE_CMD_PROJMATRIXNUMBER << 24) | ((op + count) & 0x1F);
|
||||
|
||||
// Skip over the loaded data, it's done now.
|
||||
UpdatePC(currentList->pc, currentList->pc + count * 4);
|
||||
|
@ -1305,15 +1305,16 @@ void GPUCommon::Execute_ProjMtxNum(u32 op, u32 diff) {
|
|||
|
||||
void GPUCommon::Execute_ProjMtxData(u32 op, u32 diff) {
|
||||
// Note: it's uncommon to get here now, see above.
|
||||
int num = gstate.projmtxnum & 0xF;
|
||||
int num = gstate.projmtxnum & 0x1F; // NOTE: Changed from 0xF to catch overflows
|
||||
u32 newVal = op << 8;
|
||||
if (newVal != ((const u32 *)gstate.projMatrix)[num]) {
|
||||
if (num < 0x10 && newVal != ((const u32 *)gstate.projMatrix)[num]) {
|
||||
Flush();
|
||||
((u32 *)gstate.projMatrix)[num] = newVal;
|
||||
shaderManager_->DirtyUniform(DIRTY_PROJMATRIX);
|
||||
}
|
||||
num++;
|
||||
gstate.projmtxnum = (GE_CMD_PROJMATRIXNUMBER << 24) | (num & 0xF);
|
||||
if (num <= 16)
|
||||
gstate.projmtxnum = (GE_CMD_PROJMATRIXNUMBER << 24) | (num & 0xF);
|
||||
}
|
||||
|
||||
void GPUCommon::Execute_TgenMtxNum(u32 op, u32 diff) {
|
||||
|
|
Loading…
Add table
Reference in a new issue