I do wonder about the reason for submitting this right now; my impression is that the shader reflection bits aren't in danger of being imminently released, so I imagine this is mostly intended to address the second point. That's a purely internal usage though, and wouldn't require introducing public API.
Sure, and I suppose I could just make the structure private for now. I didn't see a reason to do that, though.
Mostly just private structures being easier than public ones, as well as getting the chance to see how using this internally for SPIR-V ends up working out.
I can see the value in avoiding exposing the API unless necessary. It'd be an awkward and nontrivial bit of extra work to make this internal, though, given how the descriptor info is currently accessed by vkd3d_shader_parser_compile(). Unless I suppose it'd be acceptable to just keep the structures and everything the same but move the struct out of the function header? It'd be a bit awkward, mostly because we'd have a private element of enum vkd3d_shader_structure_type, but less painful.
Or I could prototype a partial user of this in a reflection API, which broadly shouldn't be too hard anyway. The only really painful part of reflection, and the reason I haven't actually submitted anything yet, is designing the API for constant buffers.