vkd3d-utils: Constant buffer reflection without vkd3d-shader.
As per discussion in 606, plumbing constant buffer reflection through vkd3d-shader requires interface design and API documentation for an interface which is inherently quite specific to one format. Instead of wasting time on this interface, just implement RDEF parsing in vkd3d-utils itself. If we change our mind about this, we can always move the implementation to vkd3d-shader anyway.
This does not copy the existing implementation from Wine, because:
-
Wine does not validate offsets; adding this changes the parsing code significantly;
-
Wine incorrectly handles types, deduplicating them into an rbtree;
-
Wine skips several fields which I have been able to find the purpose of.
The implementation is not that complex to begin with, so reimplementing it from scratch is not much work.