Commit d495006
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
- syscall
- task
- libs/libbreenix/src
- scripts/parallels
- userspace/programs/src
Large diffs are not rendered by default.
0 commit comments