LLVM: include/llvm/BinaryFormat/DXContainer.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_BINARYFORMAT_DXCONTAINER_H
14#define LLVM_BINARYFORMAT_DXCONTAINER_H
15
23
24#include <stdint.h>
25
26namespace llvm {
27template struct EnumEntry;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
44
46
49 "Shader kind out of expected range.");
51}
52
56
62
71
81
97
98
102
105 return StringRef(reinterpret_cast<const char *>(&Name[0]), 4);
106 }
107
108};
109
126
145
146static_assert(sizeof(ProgramHeader) == 24, "ProgramHeader Size incorrect!");
147
148#define CONTAINER_PART(Part) Part,
151#include "DXContainerConstants.def"
152};
153
154#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) Val = 1ull << Num,
156#include "DXContainerConstants.def"
157};
158static_assert((uint64_t)FeatureFlags::NextUnusedBit <= 1ull << 63,
159 "Shader flag bits exceed enum size.");
160
161#define ROOT_SIGNATURE_FLAG(Num, Val) Val = Num,
163#include "DXContainerConstants.def"
164
166};
167
169
170#define ROOT_DESCRIPTOR_FLAG(Num, Enum, Flag) Enum = Num,
172#include "DXContainerConstants.def"
173
175};
176
178
179#define DESCRIPTOR_RANGE_FLAG(Num, Enum, Flag) Enum = Num,
181#include "DXContainerConstants.def"
182
184};
185
187
188#define STATIC_SAMPLER_FLAG(Num, Enum, Flag) Enum = Num,
190#include "DXContainerConstants.def"
191
193};
194
196
197#define ROOT_PARAMETER(Val, Enum) Enum = Val,
199#include "DXContainerConstants.def"
200};
201
203
205
207
208#define SHADER_VISIBILITY(Val, Enum) Enum = Val,
210#include "DXContainerConstants.def"
211};
212
214
216
217#define FILTER(Val, Enum) Enum = Val,
219#include "DXContainerConstants.def"
220};
221
223
225
226#define TEXTURE_ADDRESS_MODE(Val, Enum) Enum = Val,
228#include "DXContainerConstants.def"
229};
230
232
234
235#define COMPARISON_FUNC(Val, Enum) Enum = Val,
237#include "DXContainerConstants.def"
238};
239
241
243
244#define STATIC_BORDER_COLOR(Val, Enum) Enum = Val,
246#include "DXContainerConstants.def"
247};
248
250
252
254
256
258
260
269
283
295
309
319
335
341
350
352 switch (Stage) {
354 PS.swapBytes();
355 break;
357 VS.swapBytes();
358 break;
360 GS.swapBytes();
361 break;
363 HS.swapBytes();
364 break;
366 DS.swapBytes();
367 break;
369 MS.swapBytes();
370 break;
372 AS.swapBytes();
373 break;
374 default:
375 break;
376 }
377 }
378};
379
380static_assert(sizeof(PipelinePSVInfo) == 4 * sizeof(uint32_t),
381 "Pipeline-specific PSV info must fit in 16 bytes.");
382
384
385#define SEMANTIC_KIND(Val, Enum) Enum = Val,
387#include "DXContainerConstants.def"
388};
389
391
392#define COMPONENT_TYPE(Val, Enum) Enum = Val,
394#include "DXContainerConstants.def"
395};
396
398
399#define INTERPOLATION_MODE(Val, Enum) Enum = Val,
401#include "DXContainerConstants.def"
402};
403
405
406#define RESOURCE_TYPE(Val, Enum) Enum = Val,
408#include "DXContainerConstants.def"
409};
410
412
413#define RESOURCE_KIND(Val, Enum) Enum = Val,
415#include "DXContainerConstants.def"
416};
417
419
420#define RESOURCE_FLAG(Index, Enum) bool Enum = false;
424#include "llvm/BinaryFormat/DXContainerConstants.def"
425 };
426 union {
429 };
431};
432
447
461
486
487static_assert(sizeof(SignatureElement) == 4 * sizeof(uint32_t),
488 "PSV Signature elements must fit in 16 bytes.");
489
490}
491
493
498
510
511
515
516
519
523
529};
530
531}
532
562
578}
579
580#define COMPONENT_PRECISION(Val, Enum) Enum = Val,
582#include "DXContainerConstants.def"
583};
584
586
587#define D3D_SYSTEM_VALUE(Val, Enum) Enum = Val,
589#include "DXContainerConstants.def"
590};
591
593
594#define COMPONENT_TYPE(Val, Enum) Enum = Val,
596#include "DXContainerConstants.def"
597};
598
600
610
644
645static_assert(sizeof(ProgramSignatureElement) == 32,
646 "ProgramSignatureElement is misaligned");
647
680
695
704
705
706
718
730
748}
749
781
797}
798
799
805
806}
807}
808
809#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
#define LLVM_ABI_FOR_TEST
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
StringRef - Represent a constant reference to a string, i.e.
Definition DXContainer.h:433
Definition DXContainer.h:492
Definition DXContainer.h:533
Definition DXContainer.h:563
Definition DXContainer.h:383
SemanticKind
Definition DXContainer.h:386
ResourceType
Definition DXContainer.h:407
InterpolationMode
Definition DXContainer.h:400
LLVM_ABI ArrayRef< EnumEntry< ResourceKind > > getResourceKinds()
LLVM_ABI ArrayRef< EnumEntry< ComponentType > > getComponentTypes()
LLVM_ABI ArrayRef< EnumEntry< ResourceType > > getResourceTypes()
ResourceKind
Definition DXContainer.h:414
LLVM_ABI ArrayRef< EnumEntry< SemanticKind > > getSemanticKinds()
ComponentType
Definition DXContainer.h:393
LLVM_ABI ArrayRef< EnumEntry< InterpolationMode > > getInterpolationModes()
Definition DXContainer.h:649
Definition DXContainer.h:750
Definition DXContainer.h:782
Definition DXContainer.h:648
Definition DXContainer.h:43
LLVM_ABI ArrayRef< EnumEntry< ComparisonFunc > > getComparisonFuncs()
SigComponentType
Definition DXContainer.h:595
LLVM_ABI ArrayRef< EnumEntry< ShaderVisibility > > getShaderVisibility()
D3DSystemValue
Definition DXContainer.h:588
bool isValidShaderVisibility(uint32_t V)
StaticBorderColor
Definition DXContainer.h:245
LLVM_ABI PartType parsePartType(StringRef S)
ComparisonFunc
Definition DXContainer.h:236
RootParameterType
Definition DXContainer.h:198
bool isValidSamplerFilter(uint32_t V)
DescriptorRangeFlags
Definition DXContainer.h:180
bool isValidStaticSamplerFlags(uint32_t V)
LLVM_ABI ArrayRef< EnumEntry< RootFlags > > getRootFlags()
PartType
Definition DXContainer.h:149
@ Unknown
Definition DXContainer.h:150
LLVM_ABI ArrayRef< EnumEntry< RootParameterType > > getRootParameterTypes()
RootSignatureVersion
Definition DXContainer.h:800
@ V1_2
Definition DXContainer.h:803
@ V1_1
Definition DXContainer.h:802
@ V1_0
Definition DXContainer.h:801
bool isValidRootDesciptorFlags(uint32_t V)
RootDescriptorFlags
Definition DXContainer.h:171
SigMinPrecision
Definition DXContainer.h:581
Triple::EnvironmentType getShaderStage(uint32_t Kind)
Definition DXContainer.h:47
LLVM_ABI ArrayRef< EnumEntry< SigComponentType > > getSigComponentTypes()
LLVM_ABI ArrayRef< EnumEntry< SigMinPrecision > > getSigMinPrecisions()
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()
LLVM_ABI ArrayRef< EnumEntry< DescriptorRangeFlags > > getDescriptorRangeFlags()
HashFlags
Definition DXContainer.h:57
@ IncludesSource
Definition DXContainer.h:59
@ None
Definition DXContainer.h:58
LLVM_ABI ArrayRef< EnumEntry< SamplerFilter > > getSamplerFilters()
TextureAddressMode
Definition DXContainer.h:227
LLVM_ABI ArrayRef< EnumEntry< D3DSystemValue > > getD3DSystemValues()
bool isValidDescriptorRangeFlags(uint32_t V)
bool isValidBorderColor(uint32_t V)
bool isValidComparisonFunc(uint32_t V)
LLVM_ABI_FOR_TEST bool isValidParameterType(uint32_t V)
ShaderVisibility
Definition DXContainer.h:209
LLVM_ABI ArrayRef< EnumEntry< StaticBorderColor > > getStaticBorderColors()
bool isValidAddress(uint32_t V)
LLVM_ABI ArrayRef< EnumEntry< TextureAddressMode > > getTextureAddressModes()
SamplerFilter
Definition DXContainer.h:218
StaticSamplerFlags
Definition DXContainer.h:189
FeatureFlags
Definition DXContainer.h:155
bool isValidRangeType(uint32_t V)
RootFlags
Definition DXContainer.h:162
LLVM_ABI ArrayRef< EnumEntry< StaticSamplerFlags > > getStaticSamplerFlags()
LLVM_ABI ArrayRef< EnumEntry< RootDescriptorFlags > > getRootDescriptorFlags()
void swapByteOrder(T &Value)
This is an optimization pass for GlobalISel generic memory operations.
@ LLVM_MARK_AS_BITMASK_ENUM
Definition DXContainer.h:336
uint32_t PayloadSizeInBytes
Definition DXContainer.h:337
void swapBytes()
Definition DXContainer.h:339
Definition DXContainer.h:72
void swapBytes()
Definition DXContainer.h:76
uint16_t Minor
Definition DXContainer.h:74
uint16_t Major
Definition DXContainer.h:73
Definition DXContainer.h:284
uint32_t InputControlPointCount
Definition DXContainer.h:285
uint32_t TessellatorDomain
Definition DXContainer.h:288
uint8_t OutputPositionPresent
Definition DXContainer.h:286
uint8_t Unused[3]
Definition DXContainer.h:287
void swapBytes()
Definition DXContainer.h:290
Definition DXContainer.h:296
uint8_t Unused[3]
Definition DXContainer.h:301
uint32_t InputPrimitive
Definition DXContainer.h:297
uint32_t OutputTopology
Definition DXContainer.h:298
uint8_t OutputPositionPresent
Definition DXContainer.h:300
uint32_t OutputStreamMask
Definition DXContainer.h:299
void swapBytes()
Definition DXContainer.h:303
Definition DXContainer.h:53
uint8_t Digest[16]
Definition DXContainer.h:54
Definition DXContainer.h:270
uint32_t TessellatorOutputPrimitive
Definition DXContainer.h:274
void swapBytes()
Definition DXContainer.h:276
uint32_t OutputControlPointCount
Definition DXContainer.h:272
uint32_t InputControlPointCount
Definition DXContainer.h:271
uint32_t TessellatorDomain
Definition DXContainer.h:273
Definition DXContainer.h:320
void swapBytes()
Definition DXContainer.h:327
uint32_t PayloadSizeInBytes
Definition DXContainer.h:323
uint16_t MaxOutputVertices
Definition DXContainer.h:324
uint16_t MaxOutputPrimitives
Definition DXContainer.h:325
uint32_t GroupSharedBytesDependentOnViewID
Definition DXContainer.h:322
uint32_t GroupSharedBytesUsed
Definition DXContainer.h:321
Definition DXContainer.h:423
Definition DXContainer.h:421
uint32_t Flags
Definition DXContainer.h:427
ResourceFlags()
Definition DXContainer.h:422
FlagsBits Bits
Definition DXContainer.h:428
bool operator==(const uint32_t RFlags) const
Definition DXContainer.h:430
Definition DXContainer.h:448
uint32_t UpperBound
Definition DXContainer.h:452
uint32_t Space
Definition DXContainer.h:450
ResourceType Type
Definition DXContainer.h:449
void swapBytes()
Definition DXContainer.h:454
uint32_t LowerBound
Definition DXContainer.h:451
Definition DXContainer.h:434
uint32_t MaximumWaveLaneCount
Definition DXContainer.h:437
PipelinePSVInfo StageInfo
Definition DXContainer.h:435
void swapBytes()
Definition DXContainer.h:439
void swapBytes(Triple::EnvironmentType Stage)
Definition DXContainer.h:445
uint32_t MinimumWaveLaneCount
Definition DXContainer.h:436
Definition DXContainer.h:462
SemanticKind Kind
Definition DXContainer.h:472
uint8_t Unused2
Definition DXContainer.h:478
uint8_t DynamicMask
Definition DXContainer.h:476
InterpolationMode Mode
Definition DXContainer.h:475
ComponentType Type
Definition DXContainer.h:474
uint8_t Rows
Definition DXContainer.h:466
uint32_t IndicesOffset
Definition DXContainer.h:464
void swapBytes()
Definition DXContainer.h:481
uint8_t Reserved
Definition DXContainer.h:479
uint8_t Stream
Definition DXContainer.h:477
uint8_t Allocated
Definition DXContainer.h:470
uint8_t Unused
Definition DXContainer.h:471
uint32_t NameOffset
Definition DXContainer.h:463
uint8_t StartRow
Definition DXContainer.h:467
uint8_t Cols
Definition DXContainer.h:468
uint8_t StartCol
Definition DXContainer.h:469
Definition DXContainer.h:494
uint8_t MeshOutputTopology
Definition DXContainer.h:496
uint8_t SigPrimVectors
Definition DXContainer.h:495
Definition DXContainer.h:506
GeometryExtraInfo GeomData
Definition DXContainer.h:509
uint8_t SigPatchOrPrimElements
Definition DXContainer.h:514
uint8_t UsesViewID
Definition DXContainer.h:508
uint8_t ShaderStage
Definition DXContainer.h:507
uint8_t SigOutputVectors[4]
Definition DXContainer.h:518
uint8_t SigInputElements
Definition DXContainer.h:512
void swapBytes(Triple::EnvironmentType Stage)
Definition DXContainer.h:524
uint8_t SigInputVectors
Definition DXContainer.h:517
void swapBytes()
Definition DXContainer.h:520
uint8_t SigOutputElements
Definition DXContainer.h:513
Definition DXContainer.h:550
void swapBytes()
Definition DXContainer.h:554
ResourceFlags Flags
Definition DXContainer.h:552
ResourceKind Kind
Definition DXContainer.h:551
Definition DXContainer.h:534
void swapBytes(Triple::EnvironmentType Stage)
Definition DXContainer.h:545
void swapBytes()
Definition DXContainer.h:539
uint32_t NumThreadsY
Definition DXContainer.h:536
uint32_t NumThreadsZ
Definition DXContainer.h:537
uint32_t NumThreadsX
Definition DXContainer.h:535
Definition DXContainer.h:564
void swapBytes()
Definition DXContainer.h:567
uint32_t EntryNameOffset
Definition DXContainer.h:565
void swapBytes(Triple::EnvironmentType Stage)
Definition DXContainer.h:572
Definition DXContainer.h:310
void swapBytes()
Definition DXContainer.h:315
uint8_t Unused[2]
Definition DXContainer.h:313
uint8_t SampleFrequency
Definition DXContainer.h:312
uint8_t DepthOutput
Definition DXContainer.h:311
Definition DXContainer.h:611
SigMinPrecision MinPrecision
Definition DXContainer.h:630
uint32_t NameOffset
Definition DXContainer.h:614
uint32_t Index
Definition DXContainer.h:616
uint8_t ExclusiveMask
Definition DXContainer.h:627
uint8_t Mask
Definition DXContainer.h:620
uint32_t Stream
Definition DXContainer.h:612
uint16_t Unused
Definition DXContainer.h:629
D3DSystemValue SystemValue
Definition DXContainer.h:617
void swapBytes()
Definition DXContainer.h:632
SigComponentType CompType
Definition DXContainer.h:618
uint32_t Register
Definition DXContainer.h:619
Definition DXContainer.h:681
uint32_t BaseShaderRegister
Definition DXContainer.h:684
void swapBytes()
Definition DXContainer.h:687
uint32_t NumDescriptors
Definition DXContainer.h:683
uint32_t RangeType
Definition DXContainer.h:682
uint32_t OffsetInDescriptorsFromTableStart
Definition DXContainer.h:686
uint32_t RegisterSpace
Definition DXContainer.h:685
Definition DXContainer.h:707
uint32_t Num32BitValues
Definition DXContainer.h:710
void swapBytes()
Definition DXContainer.h:712
uint32_t ShaderRegister
Definition DXContainer.h:708
uint32_t RegisterSpace
Definition DXContainer.h:709
Definition DXContainer.h:696
uint32_t ShaderRegister
Definition DXContainer.h:697
uint32_t RegisterSpace
Definition DXContainer.h:698
void swapBytes()
Definition DXContainer.h:699
Definition DXContainer.h:650
uint32_t AddressU
Definition DXContainer.h:652
uint32_t AddressV
Definition DXContainer.h:653
uint32_t ShaderRegister
Definition DXContainer.h:661
uint32_t MaxAnisotropy
Definition DXContainer.h:656
float MaxLOD
Definition DXContainer.h:660
uint32_t ComparisonFunc
Definition DXContainer.h:657
void swapBytes()
Definition DXContainer.h:664
uint32_t BorderColor
Definition DXContainer.h:658
uint32_t ShaderVisibility
Definition DXContainer.h:663
uint32_t AddressW
Definition DXContainer.h:654
float MipLODBias
Definition DXContainer.h:655
uint32_t Filter
Definition DXContainer.h:651
float MinLOD
Definition DXContainer.h:659
uint32_t RegisterSpace
Definition DXContainer.h:662
Definition DXContainer.h:764
uint32_t RangeType
Definition DXContainer.h:765
uint32_t NumDescriptors
Definition DXContainer.h:766
void swapBytes()
Definition DXContainer.h:771
uint32_t OffsetInDescriptorsFromTableStart
Definition DXContainer.h:770
uint32_t RegisterSpace
Definition DXContainer.h:768
uint32_t Flags
Definition DXContainer.h:769
uint32_t BaseShaderRegister
Definition DXContainer.h:767
void swapBytes()
Definition DXContainer.h:758
uint32_t Flags
Definition DXContainer.h:752
RootDescriptor(v1::RootDescriptor &Base)
Definition DXContainer.h:755
StaticSampler(v1::StaticSampler &Base)
Definition DXContainer.h:787
uint32_t Flags
Definition DXContainer.h:784
void swapBytes()
Definition DXContainer.h:790
Definition DXContainer.h:63
uint8_t Digest[16]
Definition DXContainer.h:65
void swapBytes()
Definition DXContainer.h:69
uint32_t Flags
Definition DXContainer.h:64
LLVM_ABI bool isPopulated()
Definition DXContainer.h:261
void swapBytes()
Definition DXContainer.h:265
uint8_t OutputPositionPresent
Definition DXContainer.h:262
uint8_t Unused[3]
Definition DXContainer.h:263
Definition DXContainer.h:342
MeshPSVInfo MS
Definition DXContainer.h:348
void swapBytes(Triple::EnvironmentType Stage)
Definition DXContainer.h:351
VertexPSVInfo VS
Definition DXContainer.h:343
AmplificationPSVInfo AS
Definition DXContainer.h:349
GeometryPSVInfo GS
Definition DXContainer.h:346
HullPSVInfo HS
Definition DXContainer.h:344
PixelPSVInfo PS
Definition DXContainer.h:347
DomainPSVInfo DS
Definition DXContainer.h:345