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// STATIC_SAMPLER_FLAG(flag value, name, flag).
108#ifdef STATIC_SAMPLER_FLAG
109
110STATIC_SAMPLER_FLAG(0x0, None, SAMPLER_FLAG_NONE)
111STATIC_SAMPLER_FLAG(0x1, UintBorderColor, SAMPLER_FLAG_UINT_BORDER_COLOR)
112STATIC_SAMPLER_FLAG(0x2, NonNormalizedCoordinates, SAMPLER_FLAG_NON_NORMALIZED_COORDINATES)
113
114#undef STATIC_SAMPLER_FLAG
115#endif // STATIC_SAMPLER_FLAG
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