Expand description
Render budget enforcement with graceful degradation.
This module provides time-based budget tracking for frame rendering, enabling the system to gracefully degrade visual fidelity when performance budgets are exceeded.
§Overview
Agent UIs receive unpredictable content (burst log output, large tool responses). A frozen UI during burst input makes the agent feel broken. Users tolerate reduced visual fidelity; they do NOT tolerate hangs.
§Usage
use ftui_render::budget::{RenderBudget, DegradationLevel, FrameBudgetConfig};
use std::time::Duration;
// Create a budget with 16ms total (60fps target)
let mut budget = RenderBudget::new(Duration::from_millis(16));
// Check remaining time
let remaining = budget.remaining();
// Check if we should degrade for an expensive operation
if budget.should_degrade(Duration::from_millis(5)) {
budget.degrade();
}
// Render at current degradation level
match budget.degradation() {
DegradationLevel::Full => { /* full rendering */ }
DegradationLevel::SimpleBorders => { /* ASCII borders */ }
_ => { /* further degradation */ }
}Structs§
- Budget
Controller - Adaptive budget controller combining PID regulation with e-process gating.
- Budget
Controller Config - Configuration for the adaptive budget controller.
- Budget
Telemetry - Snapshot of budget controller telemetry for diagnostics and debug overlay.
- EProcess
Config - Anytime-valid e-process for gating degradation decisions.
- Frame
Budget Config - Configuration for frame budget behavior.
- Phase
Budgets - Per-phase time budgets within a frame.
- PidGains
- PID controller gains for frame time regulation.
- Render
Budget - Render time budget with graceful degradation.
Enums§
- Budget
Decision - Decision output from the budget controller.
- Degradation
Level - Progressive degradation levels for render quality.
- Phase
- Render phases for budget allocation.