liverpool: Avoid resuming ce_task when its finished

This commit is contained in:
IndecisiveTurtle 2025-02-23 20:13:40 +02:00
parent 207facd718
commit 2ef27007b6

View file

@ -693,7 +693,7 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
break;
}
case PM4ItOpcode::WaitOnCeCounter: {
while (cblock.ce_count <= cblock.de_count) {
while (cblock.ce_count <= cblock.de_count && !ce_task.handle.done()) {
RESUME_GFX(ce_task);
}
break;
@ -714,7 +714,9 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
}
if (ce_task.handle) {
ASSERT_MSG(ce_task.handle.done(), "Partially processed CCB");
while (!ce_task.handle.done()) {
RESUME_GFX(ce_task);
}
ce_task.handle.destroy();
}