I could not figure out the difference between for instance CD3DX12_DESCRIPTOR_RANGE and CD3DX12_DESCRIPTOR_RANGE1.

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.

| improve this answer | |
  • 1
    \$\begingroup\$ Root Signature 1.1 was introduced with Windows 10 Anniversary Update (14393) so that API doesn't work on Windows 10 (10240) or Windows 10 November 2015 (10586). That's also why the D3DX12 helper D3DX12SerializeVersionedRootSignature was introduced to handle it. \$\endgroup\$ – Chuck Walbourn Mar 21 '19 at 6:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.