Binding separable programs to an unbound program pipeline
I'm currently wondering about the way things work with glGenProgramPipelines, glBindProgramPipeline and glUseProgramStages.
The spec says that generating names alone will mark them for use as pipeline objects but only first binding them will allocate a new default state vector. However, on the current AMD implementation I'm testing, I can alter the state of the pipeline before ever binding it. This makes sense as glUseProgramStages is a DSA function and it is not listed as an error by the spec but I'm wondering if implementations will simply create the state vector anyway and simply mark the names as used or something when binding. Otherwise it doesn't really make sense one can alter state variable that have yet to be allocated.
Am I missing something here?