Skip to content

Commit fd0dbc7

Browse files
authored
[DirectX] add enum for PSV resource type/kind/flag. (#106227)
Add ResourceType, ResourceKind and ResourceFlag enum class for PSV resource. This is for #103275
1 parent 4bc7c74 commit fd0dbc7

40 files changed

+400
-282
lines changed

llvm/include/llvm/BinaryFormat/DXContainer.h

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,27 @@ enum class InterpolationMode : uint8_t {
299299

300300
ArrayRef<EnumEntry<InterpolationMode>> getInterpolationModes();
301301

302+
#define RESOURCE_TYPE(Val, Enum) Enum = Val,
303+
enum class ResourceType : uint32_t {
304+
#include "DXContainerConstants.def"
305+
};
306+
307+
ArrayRef<EnumEntry<ResourceType>> getResourceTypes();
308+
309+
#define RESOURCE_KIND(Val, Enum) Enum = Val,
310+
enum class ResourceKind : uint32_t {
311+
#include "DXContainerConstants.def"
312+
};
313+
314+
ArrayRef<EnumEntry<ResourceKind>> getResourceKinds();
315+
316+
#define RESOURCE_FLAG(Val, Enum) Enum = Val,
317+
enum class ResourceFlag : uint32_t {
318+
#include "DXContainerConstants.def"
319+
};
320+
321+
ArrayRef<EnumEntry<ResourceFlag>> getResourceFlags();
322+
302323
namespace v0 {
303324
struct RuntimeInfo {
304325
PipelinePSVInfo StageInfo;
@@ -315,7 +336,7 @@ struct RuntimeInfo {
315336
};
316337

317338
struct ResourceBindInfo {
318-
uint32_t Type;
339+
ResourceType Type;
319340
uint32_t Space;
320341
uint32_t LowerBound;
321342
uint32_t UpperBound;
@@ -417,7 +438,7 @@ struct RuntimeInfo : public v1::RuntimeInfo {
417438
};
418439

419440
struct ResourceBindInfo : public v0::ResourceBindInfo {
420-
uint32_t Kind;
441+
ResourceKind Kind;
421442
uint32_t Flags;
422443

423444
void swapBytes() {

llvm/include/llvm/BinaryFormat/DXContainerConstants.def

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,52 @@ INTERPOLATION_MODE(8, Invalid)
150150
#undef INTERPOLATION_MODE
151151
#endif // INTERPOLATION_MODE
152152

153+
#ifdef RESOURCE_TYPE
154+
RESOURCE_TYPE(0, Invalid)
155+
RESOURCE_TYPE(1, Sampler)
156+
RESOURCE_TYPE(2, CBV)
157+
RESOURCE_TYPE(3, SRVTyped)
158+
RESOURCE_TYPE(4, SRVRaw)
159+
RESOURCE_TYPE(5, SRVStructured)
160+
RESOURCE_TYPE(6, UAVTyped)
161+
RESOURCE_TYPE(7, UAVRaw)
162+
RESOURCE_TYPE(8, UAVStructured)
163+
RESOURCE_TYPE(9, UAVStructuredWithCounter)
164+
165+
#undef RESOURCE_TYPE
166+
#endif // RESOURCE_TYPE
167+
168+
#ifdef RESOURCE_KIND
169+
RESOURCE_KIND(0, Invalid)
170+
RESOURCE_KIND(1, Texture1D)
171+
RESOURCE_KIND(2, Texture2D)
172+
RESOURCE_KIND(3, Texture2DMS)
173+
RESOURCE_KIND(4, Texture3D)
174+
RESOURCE_KIND(5, TextureCube)
175+
RESOURCE_KIND(6, Texture1DArray)
176+
RESOURCE_KIND(7, Texture2DArray)
177+
RESOURCE_KIND(8, Texture2DMSArray)
178+
RESOURCE_KIND(9, TextureCubeArray)
179+
RESOURCE_KIND(10, TypedBuffer)
180+
RESOURCE_KIND(11, RawBuffer)
181+
RESOURCE_KIND(12, StructuredBuffer)
182+
RESOURCE_KIND(13, CBuffer)
183+
RESOURCE_KIND(14, Sampler)
184+
RESOURCE_KIND(15, TBuffer)
185+
RESOURCE_KIND(16, RTAccelerationStructure)
186+
RESOURCE_KIND(17, FeedbackTexture2D)
187+
RESOURCE_KIND(18, FeedbackTexture2DArray)
188+
189+
#undef RESOURCE_KIND
190+
#endif // RESOURCE_KIND
191+
192+
#ifdef RESOURCE_FLAG
193+
RESOURCE_FLAG(0, None)
194+
RESOURCE_FLAG(1, UsedByAtomic64)
195+
196+
#undef RESOURCE_FLAG
197+
#endif // RESOURCE_FLAG
198+
153199
#ifdef D3D_SYSTEM_VALUE
154200

155201
D3D_SYSTEM_VALUE(0, Undefined)

llvm/include/llvm/ObjectYAML/DXContainerYAML.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::SignatureParameter)
176176
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::SemanticKind)
177177
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ComponentType)
178178
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::InterpolationMode)
179+
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ResourceType)
180+
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ResourceKind)
181+
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ResourceFlag)
179182
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::D3DSystemValue)
180183
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::SigComponentType)
181184
LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::SigMinPrecision)

llvm/lib/BinaryFormat/DXContainer.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,33 @@ static const EnumEntry<PSV::InterpolationMode> InterpolationModeNames[] = {
8989
ArrayRef<EnumEntry<PSV::InterpolationMode>> PSV::getInterpolationModes() {
9090
return ArrayRef(InterpolationModeNames);
9191
}
92+
93+
#define RESOURCE_TYPE(Val, Enum) {#Enum, PSV::ResourceType::Enum},
94+
95+
static const EnumEntry<PSV::ResourceType> ResourceTypeNames[] = {
96+
#include "llvm/BinaryFormat/DXContainerConstants.def"
97+
};
98+
99+
ArrayRef<EnumEntry<PSV::ResourceType>> PSV::getResourceTypes() {
100+
return ArrayRef(ResourceTypeNames);
101+
}
102+
103+
#define RESOURCE_KIND(Val, Enum) {#Enum, PSV::ResourceKind::Enum},
104+
105+
static const EnumEntry<PSV::ResourceKind> ResourceKindNames[] = {
106+
#include "llvm/BinaryFormat/DXContainerConstants.def"
107+
};
108+
109+
ArrayRef<EnumEntry<PSV::ResourceKind>> PSV::getResourceKinds() {
110+
return ArrayRef(ResourceKindNames);
111+
}
112+
113+
#define RESOURCE_FLAG(Val, Enum) {#Enum, PSV::ResourceFlag::Enum},
114+
115+
static const EnumEntry<PSV::ResourceFlag> ResourceFlagNames[] = {
116+
#include "llvm/BinaryFormat/DXContainerConstants.def"
117+
};
118+
119+
ArrayRef<EnumEntry<PSV::ResourceFlag>> PSV::getResourceFlags() {
120+
return ArrayRef(ResourceFlagNames);
121+
}

llvm/lib/ObjectYAML/DXContainerYAML.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,24 @@ void ScalarEnumerationTraits<dxbc::PSV::InterpolationMode>::enumeration(
254254
IO.enumCase(Value, E.Name.str().c_str(), E.Value);
255255
}
256256

257+
void ScalarEnumerationTraits<dxbc::PSV::ResourceType>::enumeration(
258+
IO &IO, dxbc::PSV::ResourceType &Value) {
259+
for (const auto &E : dxbc::PSV::getResourceTypes())
260+
IO.enumCase(Value, E.Name.str().c_str(), E.Value);
261+
}
262+
263+
void ScalarEnumerationTraits<dxbc::PSV::ResourceKind>::enumeration(
264+
IO &IO, dxbc::PSV::ResourceKind &Value) {
265+
for (const auto &E : dxbc::PSV::getResourceKinds())
266+
IO.enumCase(Value, E.Name.str().c_str(), E.Value);
267+
}
268+
269+
void ScalarEnumerationTraits<dxbc::PSV::ResourceFlag>::enumeration(
270+
IO &IO, dxbc::PSV::ResourceFlag &Value) {
271+
for (const auto &E : dxbc::PSV::getResourceFlags())
272+
IO.enumCase(Value, E.Name.str().c_str(), E.Value);
273+
}
274+
257275
void ScalarEnumerationTraits<dxbc::D3DSystemValue>::enumeration(
258276
IO &IO, dxbc::D3DSystemValue &Value) {
259277
for (const auto &E : dxbc::getD3DSystemValues())

llvm/test/ObjectYAML/DXContainer/DomainMaskVectors.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ Parts:
7070
NumThreadsZ: 0
7171
ResourceStride: 24
7272
Resources:
73-
- Type: 2
73+
- Type: CBV
7474
Space: 0
7575
LowerBound: 0
7676
UpperBound: 0
77-
Kind: 13
77+
Kind: CBuffer
7878
Flags: 0
7979
SigInputElements:
8080
- Name: AAA_HSFoo

llvm/test/ObjectYAML/DXContainer/PSVv0-amplification.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ Parts:
1919
MaximumWaveLaneCount: 4294967295
2020
ResourceStride: 16
2121
Resources:
22-
- Type: 1
22+
- Type: Sampler
2323
Space: 2
2424
LowerBound: 3
2525
UpperBound: 4
26-
- Type: 128
26+
- Type: Invalid
2727
Space: 32768
2828
LowerBound: 8388608
2929
UpperBound: 2147483648
@@ -48,11 +48,11 @@ Parts:
4848
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
4949
# CHECK-NEXT: ResourceStride: 16
5050
# CHECK-NEXT: Resources:
51-
# CHECK-NEXT: - Type: 1
51+
# CHECK-NEXT: - Type: Sampler
5252
# CHECK-NEXT: Space: 2
5353
# CHECK-NEXT: LowerBound: 3
5454
# CHECK-NEXT: UpperBound: 4
55-
# CHECK-NEXT: - Type: 128
55+
# CHECK-NEXT: - Type: Invalid
5656
# CHECK-NEXT: Space: 32768
5757
# CHECK-NEXT: LowerBound: 8388608
5858
# CHECK-NEXT: UpperBound: 2147483648

llvm/test/ObjectYAML/DXContainer/PSVv0-compute.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ Parts:
1818
MaximumWaveLaneCount: 4294967295
1919
ResourceStride: 16
2020
Resources:
21-
- Type: 1
21+
- Type: Sampler
2222
Space: 2
2323
LowerBound: 3
2424
UpperBound: 4
25-
- Type: 128
25+
- Type: Invalid
2626
Space: 32768
2727
LowerBound: 8388608
2828
UpperBound: 2147483648
@@ -46,11 +46,11 @@ Parts:
4646
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
4747
# CHECK-NEXT: ResourceStride: 16
4848
# CHECK-NEXT: Resources:
49-
# CHECK-NEXT: - Type: 1
49+
# CHECK-NEXT: - Type: Sampler
5050
# CHECK-NEXT: Space: 2
5151
# CHECK-NEXT: LowerBound: 3
5252
# CHECK-NEXT: UpperBound: 4
53-
# CHECK-NEXT: - Type: 128
53+
# CHECK-NEXT: - Type: Invalid
5454
# CHECK-NEXT: Space: 32768
5555
# CHECK-NEXT: LowerBound: 8388608
5656
# CHECK-NEXT: UpperBound: 2147483648

llvm/test/ObjectYAML/DXContainer/PSVv0-domain.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ Parts:
2121
MaximumWaveLaneCount: 4294967295
2222
ResourceStride: 16
2323
Resources:
24-
- Type: 1
24+
- Type: Sampler
2525
Space: 2
2626
LowerBound: 3
2727
UpperBound: 4
28-
- Type: 128
28+
- Type: Invalid
2929
Space: 32768
3030
LowerBound: 8388608
3131
UpperBound: 2147483648
@@ -52,11 +52,11 @@ Parts:
5252
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
5353
# CHECK-NEXT: ResourceStride: 16
5454
# CHECK-NEXT: Resources:
55-
# CHECK-NEXT: - Type: 1
55+
# CHECK-NEXT: - Type: Sampler
5656
# CHECK-NEXT: Space: 2
5757
# CHECK-NEXT: LowerBound: 3
5858
# CHECK-NEXT: UpperBound: 4
59-
# CHECK-NEXT: - Type: 128
59+
# CHECK-NEXT: - Type: Invalid
6060
# CHECK-NEXT: Space: 32768
6161
# CHECK-NEXT: LowerBound: 8388608
6262
# CHECK-NEXT: UpperBound: 2147483648

llvm/test/ObjectYAML/DXContainer/PSVv0-geometry.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ Parts:
2222
MaximumWaveLaneCount: 4294967295
2323
ResourceStride: 16
2424
Resources:
25-
- Type: 1
25+
- Type: Sampler
2626
Space: 2
2727
LowerBound: 3
2828
UpperBound: 4
29-
- Type: 128
29+
- Type: Invalid
3030
Space: 32768
3131
LowerBound: 8388608
3232
UpperBound: 2147483648
@@ -54,11 +54,11 @@ Parts:
5454
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
5555
# CHECK-NEXT: ResourceStride: 16
5656
# CHECK-NEXT: Resources:
57-
# CHECK-NEXT: - Type: 1
57+
# CHECK-NEXT: - Type: Sampler
5858
# CHECK-NEXT: Space: 2
5959
# CHECK-NEXT: LowerBound: 3
6060
# CHECK-NEXT: UpperBound: 4
61-
# CHECK-NEXT: - Type: 128
61+
# CHECK-NEXT: - Type: Invalid
6262
# CHECK-NEXT: Space: 32768
6363
# CHECK-NEXT: LowerBound: 8388608
6464
# CHECK-NEXT: UpperBound: 2147483648

llvm/test/ObjectYAML/DXContainer/PSVv0-hull.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ Parts:
2222
MaximumWaveLaneCount: 4294967295
2323
ResourceStride: 16
2424
Resources:
25-
- Type: 1
25+
- Type: Sampler
2626
Space: 2
2727
LowerBound: 3
2828
UpperBound: 4
29-
- Type: 128
29+
- Type: Invalid
3030
Space: 32768
3131
LowerBound: 8388608
3232
UpperBound: 2147483648
@@ -54,11 +54,11 @@ Parts:
5454
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
5555
# CHECK-NEXT: ResourceStride: 16
5656
# CHECK-NEXT: Resources:
57-
# CHECK-NEXT: - Type: 1
57+
# CHECK-NEXT: - Type: Sampler
5858
# CHECK-NEXT: Space: 2
5959
# CHECK-NEXT: LowerBound: 3
6060
# CHECK-NEXT: UpperBound: 4
61-
# CHECK-NEXT: - Type: 128
61+
# CHECK-NEXT: - Type: Invalid
6262
# CHECK-NEXT: Space: 32768
6363
# CHECK-NEXT: LowerBound: 8388608
6464
# CHECK-NEXT: UpperBound: 2147483648

llvm/test/ObjectYAML/DXContainer/PSVv0-mesh.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ Parts:
2323
MaximumWaveLaneCount: 4294967295
2424
ResourceStride: 16
2525
Resources:
26-
- Type: 1
26+
- Type: Sampler
2727
Space: 2
2828
LowerBound: 3
2929
UpperBound: 4
30-
- Type: 128
30+
- Type: Invalid
3131
Space: 32768
3232
LowerBound: 8388608
3333
UpperBound: 2147483648
@@ -56,11 +56,11 @@ Parts:
5656
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
5757
# CHECK-NEXT: ResourceStride: 16
5858
# CHECK-NEXT: Resources:
59-
# CHECK-NEXT: - Type: 1
59+
# CHECK-NEXT: - Type: Sampler
6060
# CHECK-NEXT: Space: 2
6161
# CHECK-NEXT: LowerBound: 3
6262
# CHECK-NEXT: UpperBound: 4
63-
# CHECK-NEXT: - Type: 128
63+
# CHECK-NEXT: - Type: Invalid
6464
# CHECK-NEXT: Space: 32768
6565
# CHECK-NEXT: LowerBound: 8388608
6666
# CHECK-NEXT: UpperBound: 2147483648

llvm/test/ObjectYAML/DXContainer/PSVv0-pixel.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ Parts:
2020
MaximumWaveLaneCount: 4294967295
2121
ResourceStride: 16
2222
Resources:
23-
- Type: 1
23+
- Type: Sampler
2424
Space: 2
2525
LowerBound: 3
2626
UpperBound: 4
27-
- Type: 128
27+
- Type: Invalid
2828
Space: 32768
2929
LowerBound: 8388608
3030
UpperBound: 2147483648
@@ -50,11 +50,11 @@ Parts:
5050
# CHECK-NEXT: MaximumWaveLaneCount: 4294967295
5151
# CHECK-NEXT: ResourceStride: 16
5252
# CHECK-NEXT: Resources:
53-
# CHECK-NEXT: - Type: 1
53+
# CHECK-NEXT: - Type: Sampler
5454
# CHECK-NEXT: Space: 2
5555
# CHECK-NEXT: LowerBound: 3
5656
# CHECK-NEXT: UpperBound: 4
57-
# CHECK-NEXT: - Type: 128
57+
# CHECK-NEXT: - Type: Invalid
5858
# CHECK-NEXT: Space: 32768
5959
# CHECK-NEXT: LowerBound: 8388608
6060
# CHECK-NEXT: UpperBound: 2147483648

0 commit comments

Comments
 (0)