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:
IndecisiveTurtle 2025-03-23 01:19:15 +02:00
parent 1675cffc09
commit cf014f8655

View file

@ -655,6 +655,9 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
break;
}
case PM4ItOpcode::Rewind: {
if (!rasterizer) {
break;
}
const PM4CmdRewind* rewind = reinterpret_cast<const PM4CmdRewind*>(header);
while (!rewind->Valid()) {
YIELD_GFX();
@ -793,6 +796,9 @@ Liverpool::Task Liverpool::ProcessCompute(std::span<const u32> acb, u32 vqid) {
break;
}
case PM4ItOpcode::Rewind: {
if (!rasterizer) {
break;
}
const PM4CmdRewind* rewind = reinterpret_cast<const PM4CmdRewind*>(header);
while (!rewind->Valid()) {
YIELD_ASC(vqid);