D316 - Porthole drives a virtual controller device
Status: decided Date: 2026-09-26
Porthole feeds controller state through libScePad's
virtual-device calls, self-resolved via the live kernel dispatch-table
walk, registering a virtual pad per slot on first use. State is treated
as continuous: a record whose sequence number is at or below the last
seen for its slot is discarded, and slots are tracked independently.
Why: scePadReadState consumes
controller state; the virtual-device path is the mechanism the OS itself
uses to provide it. Because the state is continuous, dropping stale
records keeps network jitter from replaying old positions.
Rejected: driving scePadReadState - it
is a consumer, not a provider. Treating the stream as discrete events -
replays stale state on jitter.