liverpool: Avoid resuming ce_task when its finished

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

View file

@ -693,7 +693,7 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
break; break;
} }
case PM4ItOpcode::WaitOnCeCounter: { 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); RESUME_GFX(ce_task);
} }
break; break;
@ -714,7 +714,9 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
} }
if (ce_task.handle) { 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(); ce_task.handle.destroy();
} }