perf(compositor): account for late frame dispatch

Include observed timer dispatch delay in the render budget, capped at one refresh and decayed by elapsed time. Preserve the scheduled presentation target and output-local state. Existing scheduling assertions remain intact; a negative control verifies the new deadline regression.
This commit is contained in:
Samuel Onoja committed 2026-10-24 22:44:06 +01:00
1 parent f5fff6d930
commit 417f78aa94
4 files changed
+113 -16

No files matched your search

+2 -2
View File
@@ -246,7 +246,7 @@ mod tests {
scheduler.request(Duration::ZERO);
let scheduled = scheduler.plan(Duration::ZERO).unwrap();
assert_eq!(fallback.deadline(start, interval, true, true), None);
let plan = scheduler.begin().unwrap();
let plan = scheduler.begin(scheduled.render_at).unwrap();
assert_eq!(plan, scheduled);
scheduler.rendered(
plan,
@@ -297,7 +297,7 @@ mod tests {
fallback.deadline(deadline, interval, needs_final_frame, true),
None
);
scheduler.begin().unwrap();
scheduler.begin(deadline.duration_since(start)).unwrap();
assert!(!scheduler.has_pending_request());
}