mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-05-14 08:12:16 +00:00
liverpool: Ignore rewind packets with nullgpu
Rewind allows guest to self modify its command list and synchronize properly. Oftentimes the value its polling is supposed to be written by a compute shader, thus it will never happen with nullgpu. Ignore the packet to avoid freezing in such case
This commit is contained in:
parent
1675cffc09
commit
cf014f8655
1 changed files with 6 additions and 0 deletions
|
@ -655,6 +655,9 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PM4ItOpcode::Rewind: {
|
case PM4ItOpcode::Rewind: {
|
||||||
|
if (!rasterizer) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
const PM4CmdRewind* rewind = reinterpret_cast<const PM4CmdRewind*>(header);
|
const PM4CmdRewind* rewind = reinterpret_cast<const PM4CmdRewind*>(header);
|
||||||
while (!rewind->Valid()) {
|
while (!rewind->Valid()) {
|
||||||
YIELD_GFX();
|
YIELD_GFX();
|
||||||
|
@ -793,6 +796,9 @@ Liverpool::Task Liverpool::ProcessCompute(std::span<const u32> acb, u32 vqid) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PM4ItOpcode::Rewind: {
|
case PM4ItOpcode::Rewind: {
|
||||||
|
if (!rasterizer) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
const PM4CmdRewind* rewind = reinterpret_cast<const PM4CmdRewind*>(header);
|
const PM4CmdRewind* rewind = reinterpret_cast<const PM4CmdRewind*>(header);
|
||||||
while (!rewind->Valid()) {
|
while (!rewind->Valid()) {
|
||||||
YIELD_ASC(vqid);
|
YIELD_ASC(vqid);
|
||||||
|
|
Loading…
Add table
Reference in a new issue