X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu_neon%2Fgpu.c;h=03b0c71b7955c811c664d2b2f241da3cebabad07;hb=faf8bb13afeebb4bbbae94cb11c57cd95b08e1dc;hp=5bd415123b69da6d98c821ef69cd308794c85a5f;hpb=9394ada5d3140e3426592a25722f4fe7083cce9d;p=pcsx_rearmed.git diff --git a/plugins/gpu_neon/gpu.c b/plugins/gpu_neon/gpu.c index 5bd41512..03b0c71b 100644 --- a/plugins/gpu_neon/gpu.c +++ b/plugins/gpu_neon/gpu.c @@ -113,7 +113,7 @@ void GPUwriteStatus(uint32_t data) uint32_t cmd = data >> 24; if (cmd < ARRAY_SIZE(gpu.regs)) { - if (cmd != 0 && gpu.regs[cmd] == data) + if (cmd != 0 && cmd != 5 && gpu.regs[cmd] == data) return; gpu.regs[cmd] = data; } @@ -328,11 +328,12 @@ static int check_cmd(uint32_t *data, int count) start_vram_transfer(data[pos + 1], data[pos + 2], cmd == 0xc0); pos += len; } - - if (cmd == -1) + else if (cmd == -1) break; } + if (gpu.frameskip.active) + renderer_sync_ecmds(gpu.ex_regs); gpu.state.fb_dirty |= vram_dirty; return count - pos; @@ -498,6 +499,7 @@ long GPUfreeze(uint32_t type, GPUFreeze_t *freeze) gpu.regs[i] ^= 1; // avoid reg change detection GPUwriteStatus((i << 24) | (gpu.regs[i] ^ 1)); } + renderer_sync_ecmds(gpu.ex_regs); break; }