Skip to content

Commit 03d8c6a

Browse files
committed
Update Shader Flags documentation
1 parent 5ff9cbc commit 03d8c6a

1 file changed

Lines changed: 46 additions & 27 deletions

File tree

docs/DXIL.rst

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -515,33 +515,52 @@ Additional shader properties are specified via tag-value pair list, which is the
515515
Shader Flags
516516
------------
517517

518-
Shaders have additional flags that covey their capabilities via tag-value pair with tag kDxilShaderFlagsTag (0), followed by an i64 bitmask integer. The bits have the following meaning:
519-
520-
=== =====================================================================
521-
Bit Description
522-
=== =====================================================================
523-
0 Disable shader optimizations
524-
1 Disable math refactoring
525-
2 Shader uses doubles
526-
3 Force early depth stencil
527-
4 Enable raw and structured buffers
528-
5 Shader uses min-precision, expressed as half and i16
529-
6 Shader uses double extension intrinsics
530-
7 Shader uses MSAD
531-
8 All resources must be bound for the duration of shader execution
532-
9 Enable view port and RT array index from any stage feeding rasterizer
533-
10 Shader uses inner coverage
534-
11 Shader uses stencil
535-
12 Shader uses intrinsics that access tiled resources
536-
13 Shader uses relaxed typed UAV load formats
537-
14 Shader uses Level9 comparison filtering
538-
15 Shader uses up to 64 UAVs
539-
16 Shader uses UAVs
540-
17 Shader uses CS4 raw and structured buffers
541-
18 Shader uses Rasterizer Ordered Views
542-
19 Shader uses wave intrinsics
543-
20 Shader uses int64 instructions
544-
=== =====================================================================
518+
Shaders have additional flags that convey their capabilities via a tag-value pair with tag kDxilShaderFlagsTag (0), followed by an i64 bitmask integer. The bits have the following meaning, Shader Model requirements, and criteria for being set:
519+
520+
=== ==== ======================================================================================== ==========================================================================================================================================================================================================================================================================================================================================================
521+
Bit SM Description Criteria to set shader flag
522+
=== ==== ======================================================================================== ==========================================================================================================================================================================================================================================================================================================================================================
523+
0 Disable shader optimizations Command-line flag ``-disable-llvm-optzns`` provided to DXC's internal frontend
524+
1 Disable math refactoring Not set
525+
2 Double-precision floating point Use of the double data type
526+
3 Force early depth-stencil test Shader is a pixel shader, and the ``[earlydepthstencil]`` attribute is present in the HLSL source
527+
4 Raw and structured buffers Use of RawBuffer or StructuredBuffer resource types
528+
5 Low-precision data types Use of half or i16 data types
529+
6 Double-precision extensions Use of FDiv, UIToFP, SIToFP, FPToUI, FPToSI, or Fma instructions with a double type
530+
7 Masked sum of absolute differences Use of the Msad instruction
531+
8 All resources bound for the duration of shader execution Command-line flag ``/all_resources_bound`` provided to DXC
532+
9 View port or render target array index from any shader feeding rasterizer ViewPortArrayIndex or RenderTargetArrayIndex semantics are present in the input signature of a geometry shader, or the output signature of a vertex, domain, or hull shader. If DXIL validator version < 1.4, this flag is also required if the ViewPortArrayIndex or RenderTargetArrayIndex semantics are present in the input signature of domain and hull shaders
533+
10 Inner coverage Use of the InnerCoverage instruction, or the InnerCoverage semantic is present in the output signature of a pixel shader
534+
11 Stencil reference value The StencilRef semantic is present in the output signature of a pixel shader
535+
12 Tiled resources Use of the CheckAccessFullyMapped instruction or, if DXIL validator version >= 1.8, the use of LodClamp in intrinsics SampleGrad, SampleCmpGrad, Sample, SampleBias, SampleCmp, or SampleCmpBias
536+
13 Typed UAV load additional formats Use of TextureLoad or BufferLoad on a UAV with a multi-component data type. If DXIL validator version == 1.0 then this flag is set when a TextureLoad or BufferLoad is used on any UAV, regardless of its data type
537+
14 Comparison filtering for feature level 9 Not set
538+
15 64 UAV slots The presence of more than 8 UAVs. If Shader Model >= 6.6, then UAV ranges count as multiple UAVs
539+
16 UAVs at every shader stage The shader has UAVs and: if Shader Model >= 6.8, the shader is a vertex, hull, domain, or geometry shader; else (Shader Model < 6.8) the shader is not a compute or pixel shader
540+
17 CS4 raw and structured buffers Use of RawBuffer or StructuedBuffer in a Shader Model 4.x compute shader
541+
18 Rasterizer order views Not set
542+
19 Wave-level operations Use of any wave or quad intrinsic: WaveIsFirstLane, WaveGetLaneIndex, WaveGetLaneCount, WaveAnyTrue, WaveAllTrue, WaveActiveAllEqual, WaveActiveBallot, WaveReadLaneAt, WaveReadLaneFirst, WaveActiveOp, WaveActiveBit, WavePrefixOp, QuadReadLaneAt, QuadOp, WaveAllBitCount, WavePrefixBitCount, WaveMatch, WaveMultiPrefixOp, WaveMultiPrefixBitCount, QuadVote
543+
20 64-bit integers Use of i64 data types
544+
21 6.1+ View instancing Use of the ViewID instruction
545+
22 6.1+ Barycentrics Use of the AttributeAtVertex instruction, or the Barcentrics semantic is present in the shader input signature. If DXIL validator version < 1.6 then this flag must not be set at all
546+
23 6.2+ Use native low-precision data types Command-line flag ``-enable-16bit-types`` is provided to DXC
547+
24 6.4+ Variable-rate shading The ShadingRate semantic is present in the shader input or output signature
548+
25 6.5+ Raytracing tier 1.1 features Use of the AllocateRayQuery, AllocateRayQuery2, or GeometryIndex instruction
549+
550+
26 6.5+ Sampler feedback Not set
551+
27 6.6+ 64-bit integer atomics on typed resources Use of i64 AtomicBinOp or AtomicCompareExchange instructions on a typed resource
552+
28 6.6+ 64-bit integer atomics on group shared Use of i64 AtomicBinOp or AtomicCompareExchange instructions on group shared memory
553+
29 6.6+ Derivatives in mesh and amp shaders Use of instructions DerivFineX, DerivFineY, DerivCoarseX, DerivCoarseY, CalculateLOD, Sample, SampleBias, SampleCmp, or SampleCmpBias in a mesh or amplification shader
554+
30 6.6+ Resource descriptor heap indexing Use of the CreateHandleFromHeap instruction on a resource descriptor heap
555+
31 6.6+ Sampler descriptor heap indexing Use of the CreateHandleFromHeap instruction on a sampler descriptor heap
556+
32 6.6+ 64-bit integer atomics on descriptor heap resources Use of i64 AtomicBinOp or AtomicCompareExchange instructions on a descriptor heap resource
557+
33 6.7+ Any UAV may not alias any other UAV If DXIL validator version >= 1.8: use of a UAV in any function. If DXIL validator version < 1.8: global presence of a UAV. This flag is not set if the ``-res-may-alias`` command-line flag is provided to DXC
558+
34 6.7+ Advanced texture operations Use of SampleCmpLevel or TextureGatherRaw instructions, or the use of TextureLoad, SampleLevel, SampleCmpLevelZero, Sample Grad, SampleCmpGrad, Sample, SampleBias, SampleCamp, or SampleCmpBias with non-constant offsets
559+
35 6.7+ Writeable MSAA textures Use of the TextureStoreSample instruction. Or if DXIL validator version < 1.8: the presence of Texture2DMS or Texture2DMSArray resources. Or if DXIL validator version >= 1.8: use of Texture2DMS or Texture2DMSArray resources in CreateHandle, CreateHandleForLib, or AnnotateHandle instructions
560+
36 6.9+ Reserved Unused
561+
37 6.8+ Expanded comparison sampling Use of the instructions SampleCmpGrad or SampleCmpBias
562+
38 6.8+ Extended command information Use of the instructions StartVertexLocation or StartInstanceLocation
563+
=== ==== ======================================================================================== ==========================================================================================================================================================================================================================================================================================================================================================
545564

546565
Geometry Shader
547566
---------------

0 commit comments

Comments
 (0)