Skip to content

Commit d495006

Browse files
ryanbreenclaude
andcommitted
feat: frame-paced compositor with sleep/wake back-pressure (~55 FPS)
Implement Wayland-style frame pacing for the GPU compositor. Client windows now block in mark_window_dirty until the compositor consumes their frame, providing natural back-pressure that locks animation to the display rate. Key changes: - mark_window_dirty (op=15) blocks caller via scheduler sleep/wake (BlockedOnTimer with 50ms timeout fallback) - composite_windows (op=16) wakes blocked clients via unblock() after GPU work completes - BWM poll timeout reduced from 100ms to 1ms for responsive compositing - Bounce uses delta-time physics (x1024 fixed-point) for FPS-independent animation speed - Added partial TRANSFER_TO_HOST_3D for dirty windows only (~480KB vs 4.9MB) - Early-out fast path when nothing is dirty (no GPU work) - Z-order fix: page_phys_addrs always populated for registered windows Result: 17 FPS -> 55 FPS, smooth animation, BWM/bounce balanced at ~33% CPU each. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 9d9b9ea commit d495006

7 files changed

Lines changed: 868 additions & 140 deletions

File tree

kernel/src/drivers/virtio/gpu_pci.rs

Lines changed: 423 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)