StageBindings typedef
One compiled stage of a pipeline — a vertex or a fragment program.
Opaque by construction: the engine looks a stage up, hands it to ShaderLibrary's owner to be paired into a pipeline, and names it when filling a uniform block or a sampler slot. It never inspects one.
name is carried rather than derived because it is the only thing the
engine can say about a stage in an error message, and because a fake in a
test needs something to be recognised by.
What a compiled stage keeps: the uniform blocks and samplers its compiled
function has a slot for, by name.
Implementation
typedef StageBindings = ({Set<String> blocks, Set<String> samplers});