Skip to content

Commit 82a7de3

Browse files
authored
Updating Root Descriptor documentation
1 parent 6a260b3 commit 82a7de3

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

llvm/docs/DirectX/DXContainer.rst

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,3 +544,73 @@ Version 1.1 Root Descriptor
544544
The Version 1.1 RootDescriptor_V1_1 extends the base structure with the following additional fields:
545545

546546
#. **Flags**: Provides additional metadata about the descriptor's usage pattern.
547+
548+
Root Descriptor Table
549+
~~~~~~~~~~~~~~~~~~~~~
550+
551+
Descriptor tables provide a flexible mechanism for grouping and managing multiple resource descriptors within
552+
a single root signature parameter. They enable efficient binding of complex shader resource sets while minimizing
553+
root signature space consumption.
554+
555+
.. code-block:: cpp
556+
557+
struct DescriptorRange_V1_0 {
558+
dxbc::DescriptorRangeType RangeType;
559+
uint32_t NumDescriptors;
560+
uint32_t BaseShaderRegister;
561+
uint32_t RegisterSpace;
562+
uint32_t OffsetInDescriptorsFromTableStart;
563+
};
564+
565+
struct DescriptorRange_V1_1 {
566+
dxbc::DescriptorRangeType RangeType;
567+
uint32_t NumDescriptors;
568+
uint32_t BaseShaderRegister;
569+
uint32_t RegisterSpace;
570+
uint32_t OffsetInDescriptorsFromTableStart;
571+
Copy// New flags for Version 1.1
572+
enum Flags {
573+
None = 0x0,
574+
// Descriptors are static and known at root signature creation
575+
DESCRIPTORS_STATIC = 0x1,
576+
// Descriptors remain constant during command list execution
577+
DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x2,
578+
// Descriptors may change frequently
579+
DESCRIPTORS_VOLATILE = 0x4
580+
};
581+
582+
// Bitfield of flags from the Flags enum
583+
uint32_t Flags;
584+
};
585+
586+
struct RootDescriptorTable {
587+
uint32_t NumDescriptorRanges;
588+
uint32_t DescriptorRangesOffset;
589+
};
590+
591+
592+
Descriptor Range Version 1.0
593+
''''''''''''''''''''''''''''
594+
595+
The Version 1.0 ``DescriptorRange_V1_0`` provides basic descriptor range definition:
596+
597+
#. **RangeType**: Type of descriptors (CBV, SRV, UAV, or Sampler)
598+
#. **NumDescriptors**: Number of descriptors in the range
599+
#. **BaseShaderRegister**: First shader register in the range
600+
#. **RegisterSpace**: Register space for the range
601+
#. **OffsetInDescriptorsFromTableStart**: Offset from the descriptor heap start
602+
603+
Descriptor Range Version 1.1
604+
''''''''''''''''''''''''''''
605+
The Version 1.1 DescriptorRange_V1_1 extends the base structure with performance optimization flags.
606+
607+
#. **Flags**: Provide additional information about the descriptors and enable further driver optimizations.
608+
609+
Root Descriptor Table
610+
'''''''''''''''''''''
611+
612+
RootDescriptorTable provides basic table structure:
613+
614+
#. **NumDescriptorRanges**: Number of descriptor ranges
615+
#. **DescriptorRangesOffset**: Offset to descriptor range array
616+

0 commit comments

Comments
 (0)