
#ifdef CONTAINER_PART
CONTAINER_PART(DXIL)
CONTAINER_PART(SFI0)
CONTAINER_PART(HASH)
CONTAINER_PART(PSV0)
CONTAINER_PART(ISG1)
CONTAINER_PART(OSG1)
CONTAINER_PART(PSG1)

#undef CONTAINER_PART
#endif // CONTAINER_PART

#ifdef SHADER_FEATURE_FLAG

// SHADER_FEATURE_FLAG(bit offset for the shader info flag, bit offset for DXIL module flag, name, description.

SHADER_FEATURE_FLAG(0,   2, Doubles, "Double-precision floating point")
SHADER_FEATURE_FLAG(1,  17, ComputeShadersPlusRawAndStructuredBuffers, "Raw and Structured buffers")
SHADER_FEATURE_FLAG(2,  16, UAVsAtEveryStage, "UAVs at every shader stage")
SHADER_FEATURE_FLAG(3,  15, Max64UAVs, "64 UAV slots")
SHADER_FEATURE_FLAG(4,  -1, MinimumPrecision, "Minimum-precision data types")
SHADER_FEATURE_FLAG(5,   6, DX11_1_DoubleExtensions, "Double-precision extensions for 11.1")
SHADER_FEATURE_FLAG(6,   7, DX11_1_ShaderExtensions, "Shader extensions for 11.1")
SHADER_FEATURE_FLAG(7,  14, LEVEL9ComparisonFiltering, "Comparison filtering for feature level 9")
SHADER_FEATURE_FLAG(8,  12, TiledResources, "Tiled resources")
SHADER_FEATURE_FLAG(9,  11, StencilRef, "PS Output Stencil Ref")
SHADER_FEATURE_FLAG(10, 10, InnerCoverage, "PS Inner Coverage")
SHADER_FEATURE_FLAG(11, 13, TypedUAVLoadAdditionalFormats, "Typed UAV Load Additional Formats")
SHADER_FEATURE_FLAG(12, 18, ROVs, "Raster Ordered UAVs")
SHADER_FEATURE_FLAG(13,  9, ViewportAndRTArrayIndexFromAnyShaderFeedingRasterizer, "SV_RenderTargetArrayIndex or SV_ViewportArrayIndex from any shader feeding rasterizer")
SHADER_FEATURE_FLAG(14, 19, WaveOps, "Wave level operations")
SHADER_FEATURE_FLAG(15, 20, Int64Ops, "64-Bit integer")
SHADER_FEATURE_FLAG(16, 21, ViewID, "View Instancing")
SHADER_FEATURE_FLAG(17, 22, Barycentrics, "Barycentrics")
SHADER_FEATURE_FLAG(18, -1, NativeLowPrecision, "Use native low precision")
SHADER_FEATURE_FLAG(19, 24, ShadingRate, "Shading Rate")
SHADER_FEATURE_FLAG(20, 25, Raytracing_Tier_1_1, "Raytracing tier 1.1 features")
SHADER_FEATURE_FLAG(21, 26, SamplerFeedback, "Sampler feedback")
SHADER_FEATURE_FLAG(22, 27, AtomicInt64OnTypedResource, "64-bit Atomics on Typed Resources")
SHADER_FEATURE_FLAG(23, 28, AtomicInt64OnGroupShared, "64-bit Atomics on Group Shared")
SHADER_FEATURE_FLAG(24, 29, DerivativesInMeshAndAmpShaders, "Derivatives in mesh and amplification shaders")
SHADER_FEATURE_FLAG(25, 30, ResourceDescriptorHeapIndexing, "Resource descriptor heap indexing")
SHADER_FEATURE_FLAG(26, 31, SamplerDescriptorHeapIndexing, "Sampler descriptor heap indexing")
SHADER_FEATURE_FLAG(27, 63, RESERVED, "<RESERVED>")
SHADER_FEATURE_FLAG(28, 32, AtomicInt64OnHeapResource, "64-bit Atomics on Heap Resources")
SHADER_FEATURE_FLAG(29, 34, AdvancedTextureOps, "Advanced Texture Ops")
SHADER_FEATURE_FLAG(30, 35, WriteableMSAATextures, "Writeable MSAA Textures")

SHADER_FEATURE_FLAG(31, 36, NextUnusedBit, "Next reserved shader flag bit (not a flag)")

#undef SHADER_FEATURE_FLAG
#endif // SHADER_FEATURE_FLAG

#ifdef DXIL_MODULE_FLAG

// Only save DXIL module flags which not map to feature flags here.
DXIL_MODULE_FLAG( 0,  DisableOptimizations,   "D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION")
DXIL_MODULE_FLAG( 1,  DisableMathRefactoring, "D3D10_SB_GLOBAL_FLAG_REFACTORING_ALLOWED")
DXIL_MODULE_FLAG( 3,  ForceEarlyDepthStencil, "D3D11_SB_GLOBAL_FLAG_FORCE_EARLY_DEPTH_STENCIL")
DXIL_MODULE_FLAG( 4,  EnableRawAndStructuredBuffers, "Raw and Structured buffers")
DXIL_MODULE_FLAG( 5,  LowPrecisionPresent, "D3D11_1_SB_GLOBAL_FLAG_ENABLE_MINIMUM_PRECISION")
DXIL_MODULE_FLAG( 8,  AllResourcesBound, "D3D12_SB_GLOBAL_FLAG_ALL_RESOURCES_BOUND")
DXIL_MODULE_FLAG(23,  UseNativeLowPrecision, "Native 16bit types enabled")
DXIL_MODULE_FLAG(33,  ResMayNotAlias, "Any UAV may not alias any other UAV")

#undef DXIL_MODULE_FLAG
#endif // DXIL_MODULE_FLAG

#ifdef SEMANTIC_KIND

SEMANTIC_KIND(0, Arbitrary)
SEMANTIC_KIND(1, VertexID)
SEMANTIC_KIND(2, InstanceID)
SEMANTIC_KIND(3, Position)
SEMANTIC_KIND(4, RenderTargetArrayIndex)
SEMANTIC_KIND(5, ViewPortArrayIndex)
SEMANTIC_KIND(6, ClipDistance)
SEMANTIC_KIND(7, CullDistance)
SEMANTIC_KIND(8, OutputControlPointID)
SEMANTIC_KIND(9, DomainLocation)
SEMANTIC_KIND(10, PrimitiveID)
SEMANTIC_KIND(11, GSInstanceID)
SEMANTIC_KIND(12, SampleIndex)
SEMANTIC_KIND(13, IsFrontFace)
SEMANTIC_KIND(14, Coverage)
SEMANTIC_KIND(15, InnerCoverage)
SEMANTIC_KIND(16, Target)
SEMANTIC_KIND(17, Depth)
SEMANTIC_KIND(18, DepthLessEqual)
SEMANTIC_KIND(19, DepthGreaterEqual)
SEMANTIC_KIND(20, StencilRef)
SEMANTIC_KIND(21, DispatchThreadID)
SEMANTIC_KIND(22, GroupID)
SEMANTIC_KIND(23, GroupIndex)
SEMANTIC_KIND(24, GroupThreadID)
SEMANTIC_KIND(25, TessFactor)
SEMANTIC_KIND(26, InsideTessFactor)
SEMANTIC_KIND(27, ViewID)
SEMANTIC_KIND(28, Barycentrics)
SEMANTIC_KIND(29, ShadingRate)
SEMANTIC_KIND(30, CullPrimitive)
SEMANTIC_KIND(30, Invalid)

#undef SEMANTIC_KIND
#endif // SEMANTIC_KIND

#ifdef COMPONENT_TYPE

COMPONENT_TYPE(0, Unknown)
COMPONENT_TYPE(1, UInt32)
COMPONENT_TYPE(2, SInt32)
COMPONENT_TYPE(3, Float32)
COMPONENT_TYPE(4, UInt16)
COMPONENT_TYPE(5, SInt16)
COMPONENT_TYPE(6, Float16)
COMPONENT_TYPE(7, UInt64)
COMPONENT_TYPE(8, SInt64)
COMPONENT_TYPE(9, Float64)

#undef COMPONENT_TYPE
#endif // COMPONENT_TYPE

#ifdef COMPONENT_PRECISION

COMPONENT_PRECISION(0, Default)
COMPONENT_PRECISION(1, Float16)
COMPONENT_PRECISION(2, Float2_8)
COMPONENT_PRECISION(3, Reserved)
COMPONENT_PRECISION(4, SInt16)
COMPONENT_PRECISION(5, UInt16)
COMPONENT_PRECISION(0xf0, Any16)
COMPONENT_PRECISION(0xf1, Any10)

#undef COMPONENT_PRECISION
#endif // COMPONENT_PRECISION

#ifdef INTERPOLATION_MODE

INTERPOLATION_MODE(0, Undefined)
INTERPOLATION_MODE(1, Constant)
INTERPOLATION_MODE(2, Linear)
INTERPOLATION_MODE(3, LinearCentroid)
INTERPOLATION_MODE(4, LinearNoperspective)
INTERPOLATION_MODE(5, LinearNoperspectiveCentroid)
INTERPOLATION_MODE(6, LinearSample)
INTERPOLATION_MODE(7, LinearNoperspectiveSample)
INTERPOLATION_MODE(8, Invalid)

#undef INTERPOLATION_MODE
#endif // INTERPOLATION_MODE

#ifdef RESOURCE_TYPE
RESOURCE_TYPE(0, Invalid)
RESOURCE_TYPE(1, Sampler)
RESOURCE_TYPE(2, CBV)
RESOURCE_TYPE(3, SRVTyped)
RESOURCE_TYPE(4, SRVRaw)
RESOURCE_TYPE(5, SRVStructured)
RESOURCE_TYPE(6, UAVTyped)
RESOURCE_TYPE(7, UAVRaw)
RESOURCE_TYPE(8, UAVStructured)
RESOURCE_TYPE(9, UAVStructuredWithCounter)

#undef RESOURCE_TYPE
#endif // RESOURCE_TYPE

#ifdef RESOURCE_KIND
RESOURCE_KIND(0, Invalid)
RESOURCE_KIND(1, Texture1D)
RESOURCE_KIND(2, Texture2D)
RESOURCE_KIND(3, Texture2DMS)
RESOURCE_KIND(4, Texture3D)
RESOURCE_KIND(5, TextureCube)
RESOURCE_KIND(6, Texture1DArray)
RESOURCE_KIND(7, Texture2DArray)
RESOURCE_KIND(8, Texture2DMSArray)
RESOURCE_KIND(9, TextureCubeArray)
RESOURCE_KIND(10, TypedBuffer)
RESOURCE_KIND(11, RawBuffer)
RESOURCE_KIND(12, StructuredBuffer)
RESOURCE_KIND(13, CBuffer)
RESOURCE_KIND(14, Sampler)
RESOURCE_KIND(15, TBuffer)
RESOURCE_KIND(16, RTAccelerationStructure)
RESOURCE_KIND(17, FeedbackTexture2D)
RESOURCE_KIND(18, FeedbackTexture2DArray)

#undef RESOURCE_KIND
#endif // RESOURCE_KIND

#ifdef RESOURCE_FLAG
RESOURCE_FLAG(0, UsedByAtomic64)

#undef RESOURCE_FLAG
#endif // RESOURCE_FLAG

#ifdef D3D_SYSTEM_VALUE

D3D_SYSTEM_VALUE(0, Undefined)
D3D_SYSTEM_VALUE(1, Position)
D3D_SYSTEM_VALUE(2, ClipDistance)
D3D_SYSTEM_VALUE(3, CullDistance)
D3D_SYSTEM_VALUE(4, RenderTargetArrayIndex)
D3D_SYSTEM_VALUE(5, ViewPortArrayIndex)
D3D_SYSTEM_VALUE(6, VertexID)
D3D_SYSTEM_VALUE(7, PrimitiveID)
D3D_SYSTEM_VALUE(8, InstanceID)
D3D_SYSTEM_VALUE(9, IsFrontFace)
D3D_SYSTEM_VALUE(10, SampleIndex)
D3D_SYSTEM_VALUE(11, FinalQuadEdgeTessfactor)
D3D_SYSTEM_VALUE(12, FinalQuadInsideTessfactor)
D3D_SYSTEM_VALUE(13, FinalTriEdgeTessfactor)
D3D_SYSTEM_VALUE(14, FinalTriInsideTessfactor)
D3D_SYSTEM_VALUE(15, FinalLineDetailTessfactor)
D3D_SYSTEM_VALUE(16, FinalLineDensityTessfactor)
D3D_SYSTEM_VALUE(23, Barycentrics)
D3D_SYSTEM_VALUE(24, ShadingRate)
D3D_SYSTEM_VALUE(25, CullPrimitive)
D3D_SYSTEM_VALUE(64, Target)
D3D_SYSTEM_VALUE(65, Depth)
D3D_SYSTEM_VALUE(66, Coverage)
D3D_SYSTEM_VALUE(67, DepthGE)
D3D_SYSTEM_VALUE(68, DepthLE)
D3D_SYSTEM_VALUE(69, StencilRef)
D3D_SYSTEM_VALUE(70, InnerCoverage)

#undef D3D_SYSTEM_VALUE

#endif // D3D_SYSTEM_VALUE
