Degraded frames in an UNBROKEN run — counted since the last frame that completed, and reset to zero by any frame that does.
Consecutive, never cumulative, and the distinction is the whole signal: a renderer-lifetime total would also be reached by isolated failures spread across an hour of otherwise healthy rendering, each of which recovered on the next frame. Those are exactly the transient host-memory spikes the non-latching branch exists to absorb silently, and reporting them would fire this on the wrong population while telling us nothing new about the wedged viewports it was built for.
Message of the throw that crossed the threshold.
Which region of the frame the crossing throw came from: frame is
everything outside the encode body (canvas resize, context setup,
evicted-batch restore), encode is the command-encoder region — the one
that had no device discrimination at all before #2417.
Payload of
Renderer.onPersistentRenderDegradation.