pipelineRefusals property
The pipelines this device could not build or link, and what to do with a draw that needs one.
The contract, for a backend from outside this repository as for the
four here: a pipeline the API refuses — at createPipeline, or at
the first draw where a lazy driver links it — is a
PipelineRefusals.report, never a throw from the draw. The draw that
needed it is skipped. While the report answers true the backend drops
what it built and builds again at the pipeline's next use; once
PipelineRefusals.isRefused, it skips every draw with the pipeline and
builds nothing — whoever reported it, and whatever the backend linked
before, so the record is asked at every bind or draw. The renderer drains
the reports after each frame, so each refusal is told once and the rest
of the frame draws.
Before 1.0 a refused link threw from PassEncoder.draw and the renderer
rethrew it: one pair of stages one driver would not link failed every
frame of the application. Held by the conformance check
a pipeline the backend refuses skips its draws and is told once.
A record kept here by default. A backend that never reports leaves it empty, which reads as "every pipeline built" — what such a backend said before this existed — and a backend that wraps another (a recorder) answers with the inner device's.
Implementation
PipelineRefusals get pipelineRefusals => _pipelineRefusals;