Skip to content

Commit 2ab9c35

Browse files
joaosaffranjoaosaffran
andauthored
[DXContainer] Update DXContainer to match D3D12 spec (#143201)
Update the descriptor range flag values in DXContainerConstants.def to match the Direct3D12 specification. This changes two aspects: 1. Modify the DESCRIPTOR_RANGE_FLAG macro to use direct values instead of bit shifts 2. Update the flag values to use hex notation and match D3D12's D3D12_DESCRIPTOR_RANGE_FLAGS enumeration: - DESCRIPTORS_VOLATILE: 0x1 - DATA_VOLATILE: 0x2 - DATA_STATIC_WHILE_SET_AT_EXECUTE: 0x4 - DATA_STATIC: 0x8 - DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS: 0x10000 3. Removed NONE value from ROOT_DESCRIPTOR_FLAG This ensures better compatibility with the D3D12 API and makes the values more explicit in the code. Requested here: #138315 (comment) --------- Co-authored-by: joaosaffran <[email protected]>
1 parent 31523de commit 2ab9c35

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

llvm/include/llvm/BinaryFormat/DXContainer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,17 +154,17 @@ enum class FeatureFlags : uint64_t {
154154
static_assert((uint64_t)FeatureFlags::NextUnusedBit <= 1ull << 63,
155155
"Shader flag bits exceed enum size.");
156156

157-
#define ROOT_ELEMENT_FLAG(Num, Val) Val = 1ull << Num,
157+
#define ROOT_ELEMENT_FLAG(Num, Val) Val = Num,
158158
enum class RootElementFlag : uint32_t {
159159
#include "DXContainerConstants.def"
160160
};
161161

162-
#define ROOT_DESCRIPTOR_FLAG(Num, Val) Val = 1ull << Num,
162+
#define ROOT_DESCRIPTOR_FLAG(Num, Val) Val = Num,
163163
enum class RootDescriptorFlag : uint32_t {
164164
#include "DXContainerConstants.def"
165165
};
166166

167-
#define DESCRIPTOR_RANGE_FLAG(Num, Val) Val = 1ull << Num,
167+
#define DESCRIPTOR_RANGE_FLAG(Num, Val) Val = Num,
168168
enum class DescriptorRangeFlag : uint32_t {
169169
#include "DXContainerConstants.def"
170170
};

llvm/include/llvm/BinaryFormat/DXContainerConstants.def

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,19 @@ SHADER_FEATURE_FLAG(33, 39, NextUnusedBit, "Next reserved shader flag bit (not a
5959
// ROOT_ELEMENT_FLAG(bit offset for the flag, name).
6060
#ifdef ROOT_ELEMENT_FLAG
6161

62-
ROOT_ELEMENT_FLAG(0, AllowInputAssemblerInputLayout)
63-
ROOT_ELEMENT_FLAG(1, DenyVertexShaderRootAccess)
64-
ROOT_ELEMENT_FLAG(2, DenyHullShaderRootAccess)
65-
ROOT_ELEMENT_FLAG(3, DenyDomainShaderRootAccess)
66-
ROOT_ELEMENT_FLAG(4, DenyGeometryShaderRootAccess)
67-
ROOT_ELEMENT_FLAG(5, DenyPixelShaderRootAccess)
68-
ROOT_ELEMENT_FLAG(6, AllowStreamOutput)
69-
ROOT_ELEMENT_FLAG(7, LocalRootSignature)
70-
ROOT_ELEMENT_FLAG(8, DenyAmplificationShaderRootAccess)
71-
ROOT_ELEMENT_FLAG(9, DenyMeshShaderRootAccess)
72-
ROOT_ELEMENT_FLAG(10, CBVSRVUAVHeapDirectlyIndexed)
73-
ROOT_ELEMENT_FLAG(11, SamplerHeapDirectlyIndexed)
62+
ROOT_ELEMENT_FLAG(0, NONE)
63+
ROOT_ELEMENT_FLAG(0x1, AllowInputAssemblerInputLayout)
64+
ROOT_ELEMENT_FLAG(0x2, DenyVertexShaderRootAccess)
65+
ROOT_ELEMENT_FLAG(0x4, DenyHullShaderRootAccess)
66+
ROOT_ELEMENT_FLAG(0x8, DenyDomainShaderRootAccess)
67+
ROOT_ELEMENT_FLAG(0x10, DenyGeometryShaderRootAccess)
68+
ROOT_ELEMENT_FLAG(0x20, DenyPixelShaderRootAccess)
69+
ROOT_ELEMENT_FLAG(0x40, AllowStreamOutput)
70+
ROOT_ELEMENT_FLAG(0x80, LocalRootSignature)
71+
ROOT_ELEMENT_FLAG(0x100, DenyAmplificationShaderRootAccess)
72+
ROOT_ELEMENT_FLAG(0x200, DenyMeshShaderRootAccess)
73+
ROOT_ELEMENT_FLAG(0x400, CBVSRVUAVHeapDirectlyIndexed)
74+
ROOT_ELEMENT_FLAG(0x800, SamplerHeapDirectlyIndexed)
7475
#undef ROOT_ELEMENT_FLAG
7576
#endif // ROOT_ELEMENT_FLAG
7677

@@ -79,9 +80,9 @@ ROOT_ELEMENT_FLAG(11, SamplerHeapDirectlyIndexed)
7980
#ifdef ROOT_DESCRIPTOR_FLAG
8081

8182
ROOT_DESCRIPTOR_FLAG(0, NONE)
82-
ROOT_DESCRIPTOR_FLAG(1, DATA_VOLATILE)
83-
ROOT_DESCRIPTOR_FLAG(2, DATA_STATIC_WHILE_SET_AT_EXECUTE)
84-
ROOT_DESCRIPTOR_FLAG(3, DATA_STATIC)
83+
ROOT_DESCRIPTOR_FLAG(0x2, DATA_VOLATILE)
84+
ROOT_DESCRIPTOR_FLAG(0x4, DATA_STATIC_WHILE_SET_AT_EXECUTE)
85+
ROOT_DESCRIPTOR_FLAG(0x8, DATA_STATIC)
8586
#undef ROOT_DESCRIPTOR_FLAG
8687
#endif // ROOT_DESCRIPTOR_FLAG
8788

@@ -90,11 +91,11 @@ ROOT_DESCRIPTOR_FLAG(3, DATA_STATIC)
9091
#ifdef DESCRIPTOR_RANGE_FLAG
9192

9293
DESCRIPTOR_RANGE_FLAG(0, NONE)
93-
DESCRIPTOR_RANGE_FLAG(1, DESCRIPTORS_VOLATILE)
94-
DESCRIPTOR_RANGE_FLAG(2, DATA_VOLATILE)
95-
DESCRIPTOR_RANGE_FLAG(3, DATA_STATIC_WHILE_SET_AT_EXECUTE)
96-
DESCRIPTOR_RANGE_FLAG(4, DATA_STATIC)
97-
DESCRIPTOR_RANGE_FLAG(16, DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS)
94+
DESCRIPTOR_RANGE_FLAG(0x1, DESCRIPTORS_VOLATILE)
95+
DESCRIPTOR_RANGE_FLAG(0x2, DATA_VOLATILE)
96+
DESCRIPTOR_RANGE_FLAG(0x4, DATA_STATIC_WHILE_SET_AT_EXECUTE)
97+
DESCRIPTOR_RANGE_FLAG(0x8, DATA_STATIC)
98+
DESCRIPTOR_RANGE_FLAG(0x10000, DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS)
9899
#undef DESCRIPTOR_RANGE_FLAG
99100
#endif // DESCRIPTOR_RANGE_FLAG
100101

0 commit comments

Comments
 (0)