Replace the rotating D3D12 copy queues with two framebuffer-bound
recording slots on one physical COPY queue. Keep allocator, command
list, query range, callback state, and fence target independent per
slot.
Submit source waits, execution, and signaling on the shared timeline.
Track framebuffer ownership through completion and serialize LGMP
publication around the last successfully published frame.
Treat IddCx's single empty dirty rectangle as no image update instead
of promoting it to full damage.
Preserve pending damage and format changes, and fall back to full damage
when legacy move regions are present.