llvm-project/llvm/include/llvm/BinaryFormat/DXContainerConstants.def
joaosaffran c7cbaef1e9
[DirectX] Adding support for static samplers in yaml2obj/obj2yaml (#139963)
- Adds support for static samplers ins dxcontainer binary format.
- Adds writing logic to mcdxbc
- adds reading logic to Object
- adds tests
Closes: [126636](https://github.com/llvm/llvm-project/issues/126636)

---------

Co-authored-by: joaosaffran <joao.saffran@microsoft.com>
2025-05-29 14:02:15 -07:00

373 lines
13 KiB
Modula-2

#ifdef CONTAINER_PART
CONTAINER_PART(DXIL)
CONTAINER_PART(SFI0)
CONTAINER_PART(HASH)
CONTAINER_PART(PSV0)
CONTAINER_PART(RTS0)
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, "CS4 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, "Native low-precision data types")
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, 36, 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, 37, SampleCmpWithGradientOrBias, "SampleCmp with gradient or bias")
SHADER_FEATURE_FLAG(32, 38, ExtendedCommandInfo, "Extended command information")
SHADER_FEATURE_FLAG(33, 39, NextUnusedBit, "Next reserved shader flag bit (not a flag)")
#undef SHADER_FEATURE_FLAG
#endif // SHADER_FEATURE_FLAG
// ROOT_ELEMENT_FLAG(bit offset for the flag, name).
#ifdef ROOT_ELEMENT_FLAG
ROOT_ELEMENT_FLAG(0, AllowInputAssemblerInputLayout)
ROOT_ELEMENT_FLAG(1, DenyVertexShaderRootAccess)
ROOT_ELEMENT_FLAG(2, DenyHullShaderRootAccess)
ROOT_ELEMENT_FLAG(3, DenyDomainShaderRootAccess)
ROOT_ELEMENT_FLAG(4, DenyGeometryShaderRootAccess)
ROOT_ELEMENT_FLAG(5, DenyPixelShaderRootAccess)
ROOT_ELEMENT_FLAG(6, AllowStreamOutput)
ROOT_ELEMENT_FLAG(7, LocalRootSignature)
ROOT_ELEMENT_FLAG(8, DenyAmplificationShaderRootAccess)
ROOT_ELEMENT_FLAG(9, DenyMeshShaderRootAccess)
ROOT_ELEMENT_FLAG(10, CBVSRVUAVHeapDirectlyIndexed)
ROOT_ELEMENT_FLAG(11, SamplerHeapDirectlyIndexed)
#undef ROOT_ELEMENT_FLAG
#endif // ROOT_ELEMENT_FLAG
// ROOT_DESCRIPTOR_FLAG(bit offset for the flag, name).
#ifdef ROOT_DESCRIPTOR_FLAG
ROOT_DESCRIPTOR_FLAG(0, NONE)
ROOT_DESCRIPTOR_FLAG(1, DATA_VOLATILE)
ROOT_DESCRIPTOR_FLAG(2, DATA_STATIC_WHILE_SET_AT_EXECUTE)
ROOT_DESCRIPTOR_FLAG(3, DATA_STATIC)
#undef ROOT_DESCRIPTOR_FLAG
#endif // ROOT_DESCRIPTOR_FLAG
// DESCRIPTOR_RANGE_FLAG(bit offset for the flag, name).
#ifdef DESCRIPTOR_RANGE_FLAG
DESCRIPTOR_RANGE_FLAG(0, NONE)
DESCRIPTOR_RANGE_FLAG(1, DESCRIPTORS_VOLATILE)
DESCRIPTOR_RANGE_FLAG(2, DATA_VOLATILE)
DESCRIPTOR_RANGE_FLAG(3, DATA_STATIC_WHILE_SET_AT_EXECUTE)
DESCRIPTOR_RANGE_FLAG(4, DATA_STATIC)
DESCRIPTOR_RANGE_FLAG(16, DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS)
#undef DESCRIPTOR_RANGE_FLAG
#endif // DESCRIPTOR_RANGE_FLAG
#ifdef ROOT_PARAMETER
ROOT_PARAMETER(0, DescriptorTable)
ROOT_PARAMETER(1, Constants32Bit)
ROOT_PARAMETER(2, CBV)
ROOT_PARAMETER(3, SRV)
ROOT_PARAMETER(4, UAV)
#undef ROOT_PARAMETER
#endif // ROOT_PARAMETER
#ifdef SHADER_VISIBILITY
SHADER_VISIBILITY(0, All)
SHADER_VISIBILITY(1, Vertex)
SHADER_VISIBILITY(2, Hull)
SHADER_VISIBILITY(3, Domain)
SHADER_VISIBILITY(4, Geometry)
SHADER_VISIBILITY(5, Pixel)
SHADER_VISIBILITY(6, Amplification)
SHADER_VISIBILITY(7, Mesh)
#undef SHADER_VISIBILITY
#endif // SHADER_VISIBILITY
#ifdef STATIC_SAMPLER_FILTER
STATIC_SAMPLER_FILTER(0, MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x1, MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x4, MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x5, MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x10, MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x11, MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x14, MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x15, MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x55, ANISOTROPIC)
STATIC_SAMPLER_FILTER(0x80, COMPARISON_MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x81, COMPARISON_MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x84, COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x85, COMPARISON_MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x90, COMPARISON_MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x91, COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x94, COMPARISON_MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x95, COMPARISON_MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0xd5, COMPARISON_ANISOTROPIC)
STATIC_SAMPLER_FILTER(0x100, MINIMUM_MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x101, MINIMUM_MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x104, MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x105, MINIMUM_MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x110, MINIMUM_MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x111, MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x114, MINIMUM_MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x115, MINIMUM_MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x155, MINIMUM_ANISOTROPIC)
STATIC_SAMPLER_FILTER(0x180, MAXIMUM_MIN_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x181, MAXIMUM_MIN_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x184, MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x185, MAXIMUM_MIN_POINT_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x190, MAXIMUM_MIN_LINEAR_MAG_MIP_POINT)
STATIC_SAMPLER_FILTER(0x191, MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x194, MAXIMUM_MIN_MAG_LINEAR_MIP_POINT)
STATIC_SAMPLER_FILTER(0x195, MAXIMUM_MIN_MAG_MIP_LINEAR)
STATIC_SAMPLER_FILTER(0x1d5, MAXIMUM_ANISOTROPIC)
#undef STATIC_SAMPLER_FILTER
#endif // STATIC_SAMPLER_FILTER
#ifdef TEXTURE_ADDRESS_MODE
TEXTURE_ADDRESS_MODE( 1, Wrap)
TEXTURE_ADDRESS_MODE( 2, Mirror)
TEXTURE_ADDRESS_MODE( 3, Clamp)
TEXTURE_ADDRESS_MODE( 4, Border)
TEXTURE_ADDRESS_MODE( 5, MirrorOnce)
#undef TEXTURE_ADDRESS_MODE
#endif // TEXTURE_ADDRESS_MODE
#ifdef COMPARISON_FUNCTION
COMPARISON_FUNCTION( 1, Never)
COMPARISON_FUNCTION( 2, Less)
COMPARISON_FUNCTION( 3, Equal)
COMPARISON_FUNCTION( 4, LessEqual)
COMPARISON_FUNCTION( 5, Greater)
COMPARISON_FUNCTION( 6, NotEqual)
COMPARISON_FUNCTION( 7, GreaterEqual)
COMPARISON_FUNCTION( 8, Always)
#undef COMPARISON_FUNCTION
#endif // COMPARISON_FUNCTION
#ifdef STATIC_BORDER_COLOR
STATIC_BORDER_COLOR( 0, TransparentBlack)
STATIC_BORDER_COLOR( 1, OpaqueBlack)
STATIC_BORDER_COLOR( 2, OpaqueWhite)
STATIC_BORDER_COLOR( 3, OpaqueBlackUint)
STATIC_BORDER_COLOR( 4, OpaqueWhiteUint)
#undef STATIC_BORDER_COLOR
#endif // STATIC_BORDER_COLOR
#ifdef DXIL_MODULE_FLAG
// Only save DXIL module flags which not map to feature flags here.
DXIL_MODULE_FLAG( 0, DisableOptimizations, "Disable shader optimizations")
DXIL_MODULE_FLAG( 1, DisableMathRefactoring, "Disable math refactoring")
DXIL_MODULE_FLAG( 3, ForceEarlyDepthStencil, "Force early depth-stencil test")
DXIL_MODULE_FLAG( 4, EnableRawAndStructuredBuffers, "Raw and structured buffers")
DXIL_MODULE_FLAG( 5, LowPrecisionPresent, "Low-precision data types present")
DXIL_MODULE_FLAG( 8, AllResourcesBound, "All resources bound for the duration of shader execution")
DXIL_MODULE_FLAG(23, NativeLowPrecisionMode, "Enable native low-precision data types")
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