13#ifndef LLVM_BINARYFORMAT_DXCONTAINER_H
14#define LLVM_BINARYFORMAT_DXCONTAINER_H
27template <
typename T>
struct EnumEntry;
49 "Shader kind out of expected range.");
105 return StringRef(
reinterpret_cast<const char *
>(&
Name[0]), 4);
142 return (Major << 4) | Minor;
146static_assert(
sizeof(ProgramHeader) == 24,
"ProgramHeader Size incorrect!");
148#define CONTAINER_PART(Part) Part,
151#include "DXContainerConstants.def"
154#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) Val = 1ull << Num,
156#include "DXContainerConstants.def"
158static_assert((
uint64_t)FeatureFlags::NextUnusedBit <= 1ull << 63,
159 "Shader flag bits exceed enum size.");
161#define ROOT_SIGNATURE_FLAG(Num, Val) Val = Num,
163#include "DXContainerConstants.def"
170#define ROOT_DESCRIPTOR_FLAG(Num, Enum, Flag) Enum = Num,
172#include "DXContainerConstants.def"
179#define DESCRIPTOR_RANGE_FLAG(Num, Enum, Flag) Enum = Num,
181#include "DXContainerConstants.def"
188#define ROOT_PARAMETER(Val, Enum) Enum = Val,
190#include "DXContainerConstants.def"
195#define DESCRIPTOR_RANGE(Val, Enum) Enum = Val,
197#include "DXContainerConstants.def"
202#define ROOT_PARAMETER(Val, Enum) \
207#include "DXContainerConstants.def"
212#define SHADER_VISIBILITY(Val, Enum) Enum = Val,
214#include "DXContainerConstants.def"
219#define SHADER_VISIBILITY(Val, Enum) \
224#include "DXContainerConstants.def"
229#define FILTER(Val, Enum) Enum = Val,
231#include "DXContainerConstants.def"
236#define TEXTURE_ADDRESS_MODE(Val, Enum) Enum = Val,
238#include "DXContainerConstants.def"
243#define COMPARISON_FUNC(Val, Enum) Enum = Val,
245#include "DXContainerConstants.def"
250#define STATIC_BORDER_COLOR(Val, Enum) Enum = Val,
252#include "DXContainerConstants.def"
378static_assert(
sizeof(PipelinePSVInfo) == 4 *
sizeof(
uint32_t),
379 "Pipeline-specific PSV info must fit in 16 bytes.");
383#define SEMANTIC_KIND(Val, Enum) Enum = Val,
385#include "DXContainerConstants.def"
390#define COMPONENT_TYPE(Val, Enum) Enum = Val,
392#include "DXContainerConstants.def"
397#define INTERPOLATION_MODE(Val, Enum) Enum = Val,
399#include "DXContainerConstants.def"
404#define RESOURCE_TYPE(Val, Enum) Enum = Val,
406#include "DXContainerConstants.def"
411#define RESOURCE_KIND(Val, Enum) Enum = Val,
413#include "DXContainerConstants.def"
418#define RESOURCE_FLAG(Index, Enum) bool Enum = false;
422#include "llvm/BinaryFormat/DXContainerConstants.def"
485static_assert(
sizeof(SignatureElement) == 4 *
sizeof(
uint32_t),
486 "PSV Signature elements must fit in 16 bytes.");
578#define COMPONENT_PRECISION(Val, Enum) Enum = Val,
580#include "DXContainerConstants.def"
585#define D3D_SYSTEM_VALUE(Val, Enum) Enum = Val,
587#include "DXContainerConstants.def"
592#define COMPONENT_TYPE(Val, Enum) Enum = Val,
594#include "DXContainerConstants.def"
643static_assert(
sizeof(ProgramSignatureElement) == 32,
644 "ProgramSignatureElement is misaligned");
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Wrapper class representing virtual and physical registers.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM_ABI ArrayRef< EnumEntry< ResourceKind > > getResourceKinds()
LLVM_ABI ArrayRef< EnumEntry< ComponentType > > getComponentTypes()
LLVM_ABI ArrayRef< EnumEntry< ResourceType > > getResourceTypes()
LLVM_ABI ArrayRef< EnumEntry< SemanticKind > > getSemanticKinds()
LLVM_ABI ArrayRef< EnumEntry< InterpolationMode > > getInterpolationModes()
LLVM_ABI ArrayRef< EnumEntry< ComparisonFunc > > getComparisonFuncs()
LLVM_ABI ArrayRef< EnumEntry< ShaderVisibility > > getShaderVisibility()
bool isValidShaderVisibility(uint32_t V)
LLVM_ABI PartType parsePartType(StringRef S)
LLVM_ABI ArrayRef< EnumEntry< RootFlags > > getRootFlags()
LLVM_ABI ArrayRef< EnumEntry< RootParameterType > > getRootParameterTypes()
Triple::EnvironmentType getShaderStage(uint32_t Kind)
LLVM_ABI ArrayRef< EnumEntry< SigComponentType > > getSigComponentTypes()
LLVM_ABI ArrayRef< EnumEntry< SigMinPrecision > > getSigMinPrecisions()
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()
LLVM_ABI ArrayRef< EnumEntry< DescriptorRangeFlags > > getDescriptorRangeFlags()
LLVM_ABI ArrayRef< EnumEntry< SamplerFilter > > getSamplerFilters()
LLVM_ABI ArrayRef< EnumEntry< D3DSystemValue > > getD3DSystemValues()
bool isValidParameterType(uint32_t V)
LLVM_ABI ArrayRef< EnumEntry< DescriptorRangeType > > getDescriptorRangeTypes()
LLVM_ABI ArrayRef< EnumEntry< StaticBorderColor > > getStaticBorderColors()
LLVM_ABI ArrayRef< EnumEntry< TextureAddressMode > > getTextureAddressModes()
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
uint32_t PayloadSizeInBytes
uint32_t InputControlPointCount
uint32_t TessellatorDomain
uint8_t OutputPositionPresent
uint8_t OutputPositionPresent
uint32_t OutputStreamMask
uint32_t TessellatorOutputPrimitive
uint32_t OutputControlPointCount
uint32_t InputControlPointCount
uint32_t TessellatorDomain
uint32_t PayloadSizeInBytes
uint16_t MaxOutputVertices
uint16_t MaxOutputPrimitives
uint32_t GroupSharedBytesDependentOnViewID
uint32_t GroupSharedBytesUsed
bool operator==(const uint32_t RFlags) const
uint32_t MaximumWaveLaneCount
PipelinePSVInfo StageInfo
void swapBytes(Triple::EnvironmentType Stage)
uint32_t MinimumWaveLaneCount
uint8_t MeshOutputTopology
GeometryExtraInfo GeomData
uint8_t SigPatchOrPrimElements
uint8_t SigOutputVectors[4]
void swapBytes(Triple::EnvironmentType Stage)
uint8_t SigOutputElements
void swapBytes(Triple::EnvironmentType Stage)
void swapBytes(Triple::EnvironmentType Stage)
SigMinPrecision MinPrecision
D3DSystemValue SystemValue
SigComponentType CompType
uint32_t BaseShaderRegister
uint32_t OffsetInDescriptorsFromTableStart
uint32_t ShaderVisibility
uint32_t OffsetInDescriptorsFromTableStart
uint32_t BaseShaderRegister
RootDescriptor(v1::RootDescriptor &Base)
LLVM_ABI bool isPopulated()
uint8_t OutputPositionPresent
void swapBytes(Triple::EnvironmentType Stage)