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