Why do both exist? Which should I use? Is there a general rule of behavior/usage/recommendation for all structures and functions with both naming?
Looking at the documentation the
D3D12_DESCRIPTOR_RANGE1 structure has one extra member
D3D12_DESCRIPTOR_RANGE_FLAGS Flags; to
Specifies the D3D12_DESCRIPTOR_RANGE_FLAGS that determine descriptor and data volatility.
So they are not the same, one has more information.
They are used by / available in Root Signature Version 1.1 rather than Version 1.0
So the 1-suffixed versions are a newer version of the API. Most likely you want to use this unless you're targeting old incompatible hardware/drivers.