[llvm-branch-commits] [llvm] [DirectX] Updating Root Signature documentation with Descriptor table description (PR #129797)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Mar 6 11:10:51 PST 2025


https://github.com/joaosaffran updated https://github.com/llvm/llvm-project/pull/129797

>From 82a7de3b1a22eb7f7630d5b2d6998916ede45a8c Mon Sep 17 00:00:00 2001
From: joaosaffran <126493771+joaosaffran at users.noreply.github.com>
Date: Tue, 4 Mar 2025 14:32:03 -0800
Subject: [PATCH 1/2] Updating Root Descriptor documentation

---
 llvm/docs/DirectX/DXContainer.rst | 70 +++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/llvm/docs/DirectX/DXContainer.rst b/llvm/docs/DirectX/DXContainer.rst
index b9a2067368e0f..fd1ff3f04a008 100644
--- a/llvm/docs/DirectX/DXContainer.rst
+++ b/llvm/docs/DirectX/DXContainer.rst
@@ -544,3 +544,73 @@ Version 1.1 Root Descriptor
 The Version 1.1 RootDescriptor_V1_1 extends the base structure with the following additional fields:
 
 #. **Flags**: Provides additional metadata about the descriptor's usage pattern.
+
+Root Descriptor Table
+~~~~~~~~~~~~~~~~~~~~~
+
+Descriptor tables provide a flexible mechanism for grouping and managing multiple resource descriptors within 
+a single root signature parameter. They enable efficient binding of complex shader resource sets while minimizing 
+root signature space consumption.
+
+.. code-block:: cpp
+
+   struct DescriptorRange_V1_0 {
+      dxbc::DescriptorRangeType RangeType;
+      uint32_t NumDescriptors;
+      uint32_t BaseShaderRegister;
+      uint32_t RegisterSpace;
+      uint32_t OffsetInDescriptorsFromTableStart;
+   };
+
+   struct DescriptorRange_V1_1 {
+      dxbc::DescriptorRangeType RangeType;
+      uint32_t NumDescriptors;
+      uint32_t BaseShaderRegister;
+      uint32_t RegisterSpace;
+      uint32_t OffsetInDescriptorsFromTableStart;
+      Copy// New flags for Version 1.1
+      enum Flags {
+        None                        = 0x0,
+        // Descriptors are static and known at root signature creation
+        DESCRIPTORS_STATIC          = 0x1,
+        // Descriptors remain constant during command list execution
+        DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x2,
+        // Descriptors may change frequently
+        DESCRIPTORS_VOLATILE        = 0x4
+      };
+      
+      // Bitfield of flags from the Flags enum
+      uint32_t Flags;
+   };
+
+   struct RootDescriptorTable {
+      uint32_t NumDescriptorRanges;      
+      uint32_t DescriptorRangesOffset;  
+   };
+
+
+Descriptor Range Version 1.0
+''''''''''''''''''''''''''''
+
+The Version 1.0 ``DescriptorRange_V1_0`` provides basic descriptor range definition:
+
+#. **RangeType**: Type of descriptors (CBV, SRV, UAV, or Sampler)
+#. **NumDescriptors**: Number of descriptors in the range
+#. **BaseShaderRegister**: First shader register in the range
+#. **RegisterSpace**: Register space for the range
+#. **OffsetInDescriptorsFromTableStart**: Offset from the descriptor heap start
+
+Descriptor Range Version 1.1
+''''''''''''''''''''''''''''
+The Version 1.1 DescriptorRange_V1_1 extends the base structure with performance optimization flags.
+
+#. **Flags**: Provide additional information about the descriptors and enable further driver optimizations.
+
+Root Descriptor Table
+'''''''''''''''''''''
+
+RootDescriptorTable provides basic table structure:
+
+#. **NumDescriptorRanges**: Number of descriptor ranges
+#. **DescriptorRangesOffset**: Offset to descriptor range array
+

>From 16e3642a23540edb2e306899999655ef0e9722f2 Mon Sep 17 00:00:00 2001
From: joaosaffran <126493771+joaosaffran at users.noreply.github.com>
Date: Thu, 6 Mar 2025 11:10:41 -0800
Subject: [PATCH 2/2] Update DXContainer.rst

---
 llvm/docs/DirectX/DXContainer.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/docs/DirectX/DXContainer.rst b/llvm/docs/DirectX/DXContainer.rst
index fd1ff3f04a008..0c652ed65c528 100644
--- a/llvm/docs/DirectX/DXContainer.rst
+++ b/llvm/docs/DirectX/DXContainer.rst
@@ -568,7 +568,7 @@ root signature space consumption.
       uint32_t BaseShaderRegister;
       uint32_t RegisterSpace;
       uint32_t OffsetInDescriptorsFromTableStart;
-      Copy// New flags for Version 1.1
+      // New flags for Version 1.1
       enum Flags {
         None                        = 0x0,
         // Descriptors are static and known at root signature creation



More information about the llvm-branch-commits mailing list