1 2#ifdef CONTAINER_PART 3CONTAINER_PART(DXIL) 4CONTAINER_PART(SFI0) 5CONTAINER_PART(HASH) 6CONTAINER_PART(PSV0) 7CONTAINER_PART(RTS0) 8CONTAINER_PART(ISG1) 9CONTAINER_PART(OSG1) 10CONTAINER_PART(PSG1) 11 12#undef CONTAINER_PART 13#endif // CONTAINER_PART 14 15#ifdef SHADER_FEATURE_FLAG 16 17// SHADER_FEATURE_FLAG(bit offset for the shader info flag, bit offset for DXIL module flag, name, description. 18 19SHADER_FEATURE_FLAG(0, 2, Doubles, "Double-precision floating point") 20SHADER_FEATURE_FLAG(1, 17, ComputeShadersPlusRawAndStructuredBuffers, "CS4 raw and structured buffers") 21SHADER_FEATURE_FLAG(2, 16, UAVsAtEveryStage, "UAVs at every shader stage") 22SHADER_FEATURE_FLAG(3, 15, Max64UAVs, "64 UAV slots") 23SHADER_FEATURE_FLAG(4, -1, MinimumPrecision, "Minimum-precision data types") 24SHADER_FEATURE_FLAG(5, 6, DX11_1_DoubleExtensions, "Double-precision extensions for 11.1") 25SHADER_FEATURE_FLAG(6, 7, DX11_1_ShaderExtensions, "Shader extensions for 11.1") 26SHADER_FEATURE_FLAG(7, 14, LEVEL9ComparisonFiltering, "Comparison filtering for feature level 9") 27SHADER_FEATURE_FLAG(8, 12, TiledResources, "Tiled resources") 28SHADER_FEATURE_FLAG(9, 11, StencilRef, "PS Output Stencil Ref") 29SHADER_FEATURE_FLAG(10, 10, InnerCoverage, "PS Inner Coverage") 30SHADER_FEATURE_FLAG(11, 13, TypedUAVLoadAdditionalFormats, "Typed UAV Load Additional Formats") 31SHADER_FEATURE_FLAG(12, 18, ROVs, "Raster Ordered UAVs") 32SHADER_FEATURE_FLAG(13, 9, ViewportAndRTArrayIndexFromAnyShaderFeedingRasterizer, "SV_RenderTargetArrayIndex or SV_ViewportArrayIndex from any shader feeding rasterizer") 33SHADER_FEATURE_FLAG(14, 19, WaveOps, "Wave level operations") 34SHADER_FEATURE_FLAG(15, 20, Int64Ops, "64-Bit integer") 35SHADER_FEATURE_FLAG(16, 21, ViewID, "View Instancing") 36SHADER_FEATURE_FLAG(17, 22, Barycentrics, "Barycentrics") 37SHADER_FEATURE_FLAG(18, -1, NativeLowPrecision, "Native low-precision data types") 38SHADER_FEATURE_FLAG(19, 24, ShadingRate, "Shading Rate") 39SHADER_FEATURE_FLAG(20, 25, Raytracing_Tier_1_1, "Raytracing tier 1.1 features") 40SHADER_FEATURE_FLAG(21, 26, SamplerFeedback, "Sampler feedback") 41SHADER_FEATURE_FLAG(22, 27, AtomicInt64OnTypedResource, "64-bit Atomics on Typed Resources") 42SHADER_FEATURE_FLAG(23, 28, AtomicInt64OnGroupShared, "64-bit Atomics on Group Shared") 43SHADER_FEATURE_FLAG(24, 29, DerivativesInMeshAndAmpShaders, "Derivatives in mesh and amplification shaders") 44SHADER_FEATURE_FLAG(25, 30, ResourceDescriptorHeapIndexing, "Resource descriptor heap indexing") 45SHADER_FEATURE_FLAG(26, 31, SamplerDescriptorHeapIndexing, "Sampler descriptor heap indexing") 46SHADER_FEATURE_FLAG(27, 36, RESERVED, "<RESERVED>") 47SHADER_FEATURE_FLAG(28, 32, AtomicInt64OnHeapResource, "64-bit Atomics on Heap Resources") 48SHADER_FEATURE_FLAG(29, 34, AdvancedTextureOps, "Advanced Texture Ops") 49SHADER_FEATURE_FLAG(30, 35, WriteableMSAATextures, "Writeable MSAA Textures") 50SHADER_FEATURE_FLAG(31, 37, SampleCmpWithGradientOrBias, "SampleCmp with gradient or bias") 51SHADER_FEATURE_FLAG(32, 38, ExtendedCommandInfo, "Extended command information") 52 53SHADER_FEATURE_FLAG(33, 39, NextUnusedBit, "Next reserved shader flag bit (not a flag)") 54 55#undef SHADER_FEATURE_FLAG 56#endif // SHADER_FEATURE_FLAG 57 58// Below is the definition of root signature enumerations and flags. The 59// definitions of all values here correspond to their description in the 60// d3d12.h header and are carried over from their values in DXC. For reference: 61// https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ 62 63// ROOT_SIGNATURE_FLAG(flag value, name). 64#ifdef ROOT_SIGNATURE_FLAG 65 66ROOT_SIGNATURE_FLAG(0, None) 67ROOT_SIGNATURE_FLAG(0x1, AllowInputAssemblerInputLayout) 68ROOT_SIGNATURE_FLAG(0x2, DenyVertexShaderRootAccess) 69ROOT_SIGNATURE_FLAG(0x4, DenyHullShaderRootAccess) 70ROOT_SIGNATURE_FLAG(0x8, DenyDomainShaderRootAccess) 71ROOT_SIGNATURE_FLAG(0x10, DenyGeometryShaderRootAccess) 72ROOT_SIGNATURE_FLAG(0x20, DenyPixelShaderRootAccess) 73ROOT_SIGNATURE_FLAG(0x40, AllowStreamOutput) 74ROOT_SIGNATURE_FLAG(0x80, LocalRootSignature) 75ROOT_SIGNATURE_FLAG(0x100, DenyAmplificationShaderRootAccess) 76ROOT_SIGNATURE_FLAG(0x200, DenyMeshShaderRootAccess) 77ROOT_SIGNATURE_FLAG(0x400, CBVSRVUAVHeapDirectlyIndexed) 78ROOT_SIGNATURE_FLAG(0x800, SamplerHeapDirectlyIndexed) 79 80#undef ROOT_SIGNATURE_FLAG 81#endif // ROOT_SIGNATURE_FLAG 82 83// ROOT_DESCRIPTOR_FLAG(flag value, name, flag). 84#ifdef ROOT_DESCRIPTOR_FLAG 85 86ROOT_DESCRIPTOR_FLAG(0, None, NONE) 87ROOT_DESCRIPTOR_FLAG(0x2, DataVolatile, DATA_VOLATILE) 88ROOT_DESCRIPTOR_FLAG(0x4, DataStaticWhileSetAtExecute, DATA_STATIC_WHILE_SET_AT_EXECUTE) 89ROOT_DESCRIPTOR_FLAG(0x8, DataStatic, DATA_STATIC) 90 91#undef ROOT_DESCRIPTOR_FLAG 92#endif // ROOT_DESCRIPTOR_FLAG 93 94// DESCRIPTOR_RANGE_FLAG(flag value, name, flag). 95#ifdef DESCRIPTOR_RANGE_FLAG 96 97DESCRIPTOR_RANGE_FLAG(0, None, NONE) 98DESCRIPTOR_RANGE_FLAG(0x1, DescriptorsVolatile, DESCRIPTORS_VOLATILE) 99DESCRIPTOR_RANGE_FLAG(0x2, DataVolatile, DATA_VOLATILE) 100DESCRIPTOR_RANGE_FLAG(0x4, DataStaticWhileSetAtExecute, DATA_STATIC_WHILE_SET_AT_EXECUTE) 101DESCRIPTOR_RANGE_FLAG(0x8, DataStatic, DATA_STATIC) 102DESCRIPTOR_RANGE_FLAG(0x10000, DescriptorsStaticKeepingBufferBoundsChecks, DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS) 103 104#undef DESCRIPTOR_RANGE_FLAG 105#endif // DESCRIPTOR_RANGE_FLAG 106 107// DESCRIPTOR_RANGE(value, name). 108#ifdef DESCRIPTOR_RANGE 109 110DESCRIPTOR_RANGE(0, SRV) 111DESCRIPTOR_RANGE(1, UAV) 112DESCRIPTOR_RANGE(2, CBV) 113DESCRIPTOR_RANGE(3, Sampler) 114#undef DESCRIPTOR_RANGE 115#endif // DESCRIPTOR_RANGE 116 117#ifdef ROOT_PARAMETER 118 119ROOT_PARAMETER(0, DescriptorTable) 120ROOT_PARAMETER(1, Constants32Bit) 121ROOT_PARAMETER(2, CBV) 122ROOT_PARAMETER(3, SRV) 123ROOT_PARAMETER(4, UAV) 124#undef ROOT_PARAMETER 125#endif // ROOT_PARAMETER 126 127// SHADER_VISIBILITY(value, enum). 128#ifdef SHADER_VISIBILITY 129 130SHADER_VISIBILITY(0, All) 131SHADER_VISIBILITY(1, Vertex) 132SHADER_VISIBILITY(2, Hull) 133SHADER_VISIBILITY(3, Domain) 134SHADER_VISIBILITY(4, Geometry) 135SHADER_VISIBILITY(5, Pixel) 136SHADER_VISIBILITY(6, Amplification) 137SHADER_VISIBILITY(7, Mesh) 138 139#undef SHADER_VISIBILITY 140#endif // SHADER_VISIBILITY 141 142// FILTER(value, enum). 143#ifdef FILTER 144 145FILTER(0, MinMagMipPoint) 146FILTER(0x1, MinMagPointMipLinear) 147FILTER(0x4, MinPointMagLinearMipPoint) 148FILTER(0x5, MinPointMagMipLinear) 149FILTER(0x10, MinLinearMagMipPoint) 150FILTER(0x11, MinLinearMagPointMipLinear) 151FILTER(0x14, MinMagLinearMipPoint) 152FILTER(0x15, MinMagMipLinear) 153FILTER(0x55, Anisotropic) 154FILTER(0x80, ComparisonMinMagMipPoint) 155FILTER(0x81, ComparisonMinMagPointMipLinear) 156FILTER(0x84, ComparisonMinPointMagLinearMipPoint) 157FILTER(0x85, ComparisonMinPointMagMipLinear) 158FILTER(0x90, ComparisonMinLinearMagMipPoint) 159FILTER(0x91, ComparisonMinLinearMagPointMipLinear) 160FILTER(0x94, ComparisonMinMagLinearMipPoint) 161FILTER(0x95, ComparisonMinMagMipLinear) 162FILTER(0xd5, ComparisonAnisotropic) 163FILTER(0x100, MinimumMinMagMipPoint) 164FILTER(0x101, MinimumMinMagPointMipLinear) 165FILTER(0x104, MinimumMinPointMagLinearMipPoint) 166FILTER(0x105, MinimumMinPointMagMipLinear) 167FILTER(0x110, MinimumMinLinearMagMipPoint) 168FILTER(0x111, MinimumMinLinearMagPointMipLinear) 169FILTER(0x114, MinimumMinMagLinearMipPoint) 170FILTER(0x115, MinimumMinMagMipLinear) 171FILTER(0x155, MinimumAnisotropic) 172FILTER(0x180, MaximumMinMagMipPoint) 173FILTER(0x181, MaximumMinMagPointMipLinear) 174FILTER(0x184, MaximumMinPointMagLinearMipPoint) 175FILTER(0x185, MaximumMinPointMagMipLinear) 176FILTER(0x190, MaximumMinLinearMagMipPoint) 177FILTER(0x191, MaximumMinLinearMagPointMipLinear) 178FILTER(0x194, MaximumMinMagLinearMipPoint) 179FILTER(0x195, MaximumMinMagMipLinear) 180FILTER(0x1d5, MaximumAnisotropic) 181 182#undef FILTER 183#endif // FILTER 184 185// TEXTURE_ADDRESS_MODE(value, enum). 186#ifdef TEXTURE_ADDRESS_MODE 187 188TEXTURE_ADDRESS_MODE(1, Wrap) 189TEXTURE_ADDRESS_MODE(2, Mirror) 190TEXTURE_ADDRESS_MODE(3, Clamp) 191TEXTURE_ADDRESS_MODE(4, Border) 192TEXTURE_ADDRESS_MODE(5, MirrorOnce) 193 194#undef TEXTURE_ADDRESS_MODE 195#endif // TEXTURE_ADDRESS_MODE 196 197// COMPARISON_FUNC(value, enum). 198#ifdef COMPARISON_FUNC 199 200COMPARISON_FUNC(1, Never) 201COMPARISON_FUNC(2, Less) 202COMPARISON_FUNC(3, Equal) 203COMPARISON_FUNC(4, LessEqual) 204COMPARISON_FUNC(5, Greater) 205COMPARISON_FUNC(6, NotEqual) 206COMPARISON_FUNC(7, GreaterEqual) 207COMPARISON_FUNC(8, Always) 208 209#undef COMPARISON_FUNC 210#endif // COMPARISON_FUNC 211 212// STATIC_BORDER_COLOR(value, enum). 213#ifdef STATIC_BORDER_COLOR 214 215STATIC_BORDER_COLOR(0, TransparentBlack) 216STATIC_BORDER_COLOR(1, OpaqueBlack) 217STATIC_BORDER_COLOR(2, OpaqueWhite) 218STATIC_BORDER_COLOR(3, OpaqueBlackUint) 219STATIC_BORDER_COLOR(4, OpaqueWhiteUint) 220 221#undef STATIC_BORDER_COLOR 222#endif // STATIC_BORDER_COLOR 223 224#ifdef DXIL_MODULE_FLAG 225 226// Only save DXIL module flags which not map to feature flags here. 227DXIL_MODULE_FLAG( 0, DisableOptimizations, "Disable shader optimizations") 228DXIL_MODULE_FLAG( 1, DisableMathRefactoring, "Disable math refactoring") 229DXIL_MODULE_FLAG( 3, ForceEarlyDepthStencil, "Force early depth-stencil test") 230DXIL_MODULE_FLAG( 4, EnableRawAndStructuredBuffers, "Raw and structured buffers") 231DXIL_MODULE_FLAG( 5, LowPrecisionPresent, "Low-precision data types present") 232DXIL_MODULE_FLAG( 8, AllResourcesBound, "All resources bound for the duration of shader execution") 233DXIL_MODULE_FLAG(23, NativeLowPrecisionMode, "Enable native low-precision data types") 234DXIL_MODULE_FLAG(33, ResMayNotAlias, "Any UAV may not alias any other UAV") 235 236#undef DXIL_MODULE_FLAG 237#endif // DXIL_MODULE_FLAG 238 239#ifdef SEMANTIC_KIND 240 241SEMANTIC_KIND(0, Arbitrary) 242SEMANTIC_KIND(1, VertexID) 243SEMANTIC_KIND(2, InstanceID) 244SEMANTIC_KIND(3, Position) 245SEMANTIC_KIND(4, RenderTargetArrayIndex) 246SEMANTIC_KIND(5, ViewPortArrayIndex) 247SEMANTIC_KIND(6, ClipDistance) 248SEMANTIC_KIND(7, CullDistance) 249SEMANTIC_KIND(8, OutputControlPointID) 250SEMANTIC_KIND(9, DomainLocation) 251SEMANTIC_KIND(10, PrimitiveID) 252SEMANTIC_KIND(11, GSInstanceID) 253SEMANTIC_KIND(12, SampleIndex) 254SEMANTIC_KIND(13, IsFrontFace) 255SEMANTIC_KIND(14, Coverage) 256SEMANTIC_KIND(15, InnerCoverage) 257SEMANTIC_KIND(16, Target) 258SEMANTIC_KIND(17, Depth) 259SEMANTIC_KIND(18, DepthLessEqual) 260SEMANTIC_KIND(19, DepthGreaterEqual) 261SEMANTIC_KIND(20, StencilRef) 262SEMANTIC_KIND(21, DispatchThreadID) 263SEMANTIC_KIND(22, GroupID) 264SEMANTIC_KIND(23, GroupIndex) 265SEMANTIC_KIND(24, GroupThreadID) 266SEMANTIC_KIND(25, TessFactor) 267SEMANTIC_KIND(26, InsideTessFactor) 268SEMANTIC_KIND(27, ViewID) 269SEMANTIC_KIND(28, Barycentrics) 270SEMANTIC_KIND(29, ShadingRate) 271SEMANTIC_KIND(30, CullPrimitive) 272SEMANTIC_KIND(30, Invalid) 273 274#undef SEMANTIC_KIND 275#endif // SEMANTIC_KIND 276 277#ifdef COMPONENT_TYPE 278 279COMPONENT_TYPE(0, Unknown) 280COMPONENT_TYPE(1, UInt32) 281COMPONENT_TYPE(2, SInt32) 282COMPONENT_TYPE(3, Float32) 283COMPONENT_TYPE(4, UInt16) 284COMPONENT_TYPE(5, SInt16) 285COMPONENT_TYPE(6, Float16) 286COMPONENT_TYPE(7, UInt64) 287COMPONENT_TYPE(8, SInt64) 288COMPONENT_TYPE(9, Float64) 289 290#undef COMPONENT_TYPE 291#endif // COMPONENT_TYPE 292 293#ifdef COMPONENT_PRECISION 294 295COMPONENT_PRECISION(0, Default) 296COMPONENT_PRECISION(1, Float16) 297COMPONENT_PRECISION(2, Float2_8) 298COMPONENT_PRECISION(3, Reserved) 299COMPONENT_PRECISION(4, SInt16) 300COMPONENT_PRECISION(5, UInt16) 301COMPONENT_PRECISION(0xf0, Any16) 302COMPONENT_PRECISION(0xf1, Any10) 303 304#undef COMPONENT_PRECISION 305#endif // COMPONENT_PRECISION 306 307#ifdef INTERPOLATION_MODE 308 309INTERPOLATION_MODE(0, Undefined) 310INTERPOLATION_MODE(1, Constant) 311INTERPOLATION_MODE(2, Linear) 312INTERPOLATION_MODE(3, LinearCentroid) 313INTERPOLATION_MODE(4, LinearNoperspective) 314INTERPOLATION_MODE(5, LinearNoperspectiveCentroid) 315INTERPOLATION_MODE(6, LinearSample) 316INTERPOLATION_MODE(7, LinearNoperspectiveSample) 317INTERPOLATION_MODE(8, Invalid) 318 319#undef INTERPOLATION_MODE 320#endif // INTERPOLATION_MODE 321 322#ifdef RESOURCE_TYPE 323RESOURCE_TYPE(0, Invalid) 324RESOURCE_TYPE(1, Sampler) 325RESOURCE_TYPE(2, CBV) 326RESOURCE_TYPE(3, SRVTyped) 327RESOURCE_TYPE(4, SRVRaw) 328RESOURCE_TYPE(5, SRVStructured) 329RESOURCE_TYPE(6, UAVTyped) 330RESOURCE_TYPE(7, UAVRaw) 331RESOURCE_TYPE(8, UAVStructured) 332RESOURCE_TYPE(9, UAVStructuredWithCounter) 333 334#undef RESOURCE_TYPE 335#endif // RESOURCE_TYPE 336 337#ifdef RESOURCE_KIND 338RESOURCE_KIND(0, Invalid) 339RESOURCE_KIND(1, Texture1D) 340RESOURCE_KIND(2, Texture2D) 341RESOURCE_KIND(3, Texture2DMS) 342RESOURCE_KIND(4, Texture3D) 343RESOURCE_KIND(5, TextureCube) 344RESOURCE_KIND(6, Texture1DArray) 345RESOURCE_KIND(7, Texture2DArray) 346RESOURCE_KIND(8, Texture2DMSArray) 347RESOURCE_KIND(9, TextureCubeArray) 348RESOURCE_KIND(10, TypedBuffer) 349RESOURCE_KIND(11, RawBuffer) 350RESOURCE_KIND(12, StructuredBuffer) 351RESOURCE_KIND(13, CBuffer) 352RESOURCE_KIND(14, Sampler) 353RESOURCE_KIND(15, TBuffer) 354RESOURCE_KIND(16, RTAccelerationStructure) 355RESOURCE_KIND(17, FeedbackTexture2D) 356RESOURCE_KIND(18, FeedbackTexture2DArray) 357 358#undef RESOURCE_KIND 359#endif // RESOURCE_KIND 360 361#ifdef RESOURCE_FLAG 362RESOURCE_FLAG(0, UsedByAtomic64) 363 364#undef RESOURCE_FLAG 365#endif // RESOURCE_FLAG 366 367#ifdef D3D_SYSTEM_VALUE 368 369D3D_SYSTEM_VALUE(0, Undefined) 370D3D_SYSTEM_VALUE(1, Position) 371D3D_SYSTEM_VALUE(2, ClipDistance) 372D3D_SYSTEM_VALUE(3, CullDistance) 373D3D_SYSTEM_VALUE(4, RenderTargetArrayIndex) 374D3D_SYSTEM_VALUE(5, ViewPortArrayIndex) 375D3D_SYSTEM_VALUE(6, VertexID) 376D3D_SYSTEM_VALUE(7, PrimitiveID) 377D3D_SYSTEM_VALUE(8, InstanceID) 378D3D_SYSTEM_VALUE(9, IsFrontFace) 379D3D_SYSTEM_VALUE(10, SampleIndex) 380D3D_SYSTEM_VALUE(11, FinalQuadEdgeTessfactor) 381D3D_SYSTEM_VALUE(12, FinalQuadInsideTessfactor) 382D3D_SYSTEM_VALUE(13, FinalTriEdgeTessfactor) 383D3D_SYSTEM_VALUE(14, FinalTriInsideTessfactor) 384D3D_SYSTEM_VALUE(15, FinalLineDetailTessfactor) 385D3D_SYSTEM_VALUE(16, FinalLineDensityTessfactor) 386D3D_SYSTEM_VALUE(23, Barycentrics) 387D3D_SYSTEM_VALUE(24, ShadingRate) 388D3D_SYSTEM_VALUE(25, CullPrimitive) 389D3D_SYSTEM_VALUE(64, Target) 390D3D_SYSTEM_VALUE(65, Depth) 391D3D_SYSTEM_VALUE(66, Coverage) 392D3D_SYSTEM_VALUE(67, DepthGE) 393D3D_SYSTEM_VALUE(68, DepthLE) 394D3D_SYSTEM_VALUE(69, StencilRef) 395D3D_SYSTEM_VALUE(70, InnerCoverage) 396 397#undef D3D_SYSTEM_VALUE 398 399#endif // D3D_SYSTEM_VALUE 400