Commit Graph

13 Commits

Author SHA1 Message Date
Geoffrey McRae
909271bfe1 [idd] scheduler: preserve concurrent force requests
Replace the shared force and republish booleans with request tickets.
A completed publication now acknowledges only requests captured when it
began, so a concurrent immediate or cadence-break request survives.
2026-08-06 18:02:08 +10:00
Geoffrey McRae
160c5fd1fa [idd] scheduler: fold late forces into cadence
Treat a forced publication as periodic once the normal pre-deadline
send point is due. This prevents an immediate forced copy from being
followed by another copy for the same cadence slot.
2026-08-06 18:02:08 +10:00
Geoffrey McRae
c56b10b194 [idd] scheduler: detect high-rate cadence breaks
Keep the client schedule floor at 2 ms while accepting shorter guest
frame intervals for cadence tracking. This lets sources above 500 Hz
trigger immediate final-frame delivery when their cadence breaks.
2026-08-06 18:02:08 +10:00
Geoffrey McRae
4c1722feac [idd] scheduler: report actual acquired frame rate
Derive the source rate from unique frames observed over the actual log
interval. The old EWMA discarded intervals below 2 ms, capping the
reported rate at 500 Hz and understating high-rate sources.
2026-08-06 18:02:07 +10:00
Geoffrey McRae
f95c8f0660 [idd] scheduler: pace secondary frame delivery 2026-08-05 17:10:35 +10:00
Geoffrey McRae
c7ed04412e [client/idd/obs] scheduler: isolate timing owner delivery 2026-08-05 15:45:30 +10:00
Geoffrey McRae
0b9b805530 [idd] scheduler: retain frames for publication deadlines
Prepare each acquired content frame into one of two private GPU
candidates so the IddCx frame can be released without copying it to
IVSHMEM immediately.

Wake a high-resolution publisher at the client deadline and send the
newest completed candidate. Preserve accumulated damage across
superseded candidates, include the scheduling hold in end-to-end timing,
and keep transport work on the existing physical copy queue.
2026-08-05 12:38:07 +10:00
Geoffrey McRae
d0fa4a8ddd [idd] scheduler: publish frames after guest cadence breaks
Discard the learned guest arrival period when a frame follows a gap
much larger than expected. Force that frame through and relearn the
arrival rate so sparse updates are not held for a frame that never
arrives.
2026-08-05 10:24:57 +10:00
Geoffrey McRae
5be46121a2 [client/idd] preserve frame timing across reconnects 2026-08-04 13:49:07 +10:00
Geoffrey McRae
5ebc208d43 [client/idd] harden demand-driven frame delivery 2026-08-04 13:49:07 +10:00
Geoffrey McRae
97e7f439c2 [client/idd] align frame delivery to presentation 2026-08-04 13:49:07 +10:00
Geoffrey McRae
32ced2f24a [idd] publish the latest frame before its deadline 2026-08-04 13:49:07 +10:00
Geoffrey McRae
1176e78a7f [idd] elect the fastest frame timing client 2026-08-04 13:49:07 +10:00