@startuml state CommandBufferState { [*] --> Idle Idle --> Recording : Begin() Recording --> Executable : End() Executable --> Pending : Submit() Pending --> Idle : Reset() } state CacheState { [*] --> Valid Valid --> Invalid : Widget Changed Invalid --> Rendering : Start Update Rendering --> Valid : Complete } @enduml