Note though that instead of reporting this through vkd3d_shader_scan() we could also consider introducing e.g. a vkd3d_shader_parse_rdef() function, analogous to vkd3d_shader_parse_root_signature(). That probably wouldn't change the implementation much, but it would perhaps avoid the issue of this interface being a fair bit more specific to DXBC/D3D shaders than the rest of vkd3d_shader_scan().
I guess... but it's not like that really solves any of the annoying parts, and it ends up just making the interface a bit more inconsistent. It also means we can't use the same interface for sm1, assuming we even want to.