Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shader Model 6.8 #5982

Merged
merged 91 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
edf5b27
Merged PR 5765: Update version to 1.8.2306 and fork commit sha to 6a3…
hekota Jun 20, 2023
7f6d946
Merged PR 5704: Add SM 6.8 preview features to release-preview-1.8.2306
llvm-beanz Jun 21, 2023
657d13c
Merged PR 5769: Replace incorrect sizeof() with strlen() in compiler …
tex3d Jun 21, 2023
3e10584
Merged PR 5770: Remove extra space in sha value in latest-release.json
hekota Jun 21, 2023
25156fb
Add missing dxilver 1.8 to test. (#5313)
tex3d Jun 22, 2023
60719eb
Disambiguate RecordDispatchGrid type name for GCC (#5314)
pow2clk Jun 22, 2023
6b18a6a
[NFC] Add more information on testing MDVals insertion in EmitDxilFun…
bob80905 Jul 1, 2023
f09905d
Fix include in DxilNodeProps.h (#5433)
jenatali Jul 18, 2023
2f58557
[lit] Add git usr bin to path automatically. (#5355)
python3kgae Jun 29, 2023
fed08e5
[lit] allow find git usr bin in path directly. (#5385)
python3kgae Jul 3, 2023
9468120
[Validation] Prevent instructions that accept handle arguments from a…
bob80905 Jul 22, 2023
29823ab
WaveMatrix test data refactor: remove ShaderOpArithTable.xml dependen…
tex3d Jul 22, 2023
566adca
[lit] Merge git usr bin changes to release branch (#5442)
tex3d Jul 22, 2023
81aa099
Cleanup HLSLCheckForModifiableLValue (#5458)
tcorringham Jul 27, 2023
608e93c
[Verifier] Move shader attribute diagnostics earlier. (#5453)
bob80905 Jul 31, 2023
48c9d78
[Verifier] Add verifier tests to catch MaxRecord errors earlier (#5484)
bob80905 Aug 3, 2023
7eb65ef
[Test] Replace size integer literal with regex (#5495)
bob80905 Aug 7, 2023
912e3a1
[Wave Matrix] Improve stability of wave matrix tests (#5533)
bob80905 Aug 11, 2023
040e407
Update node compute compatibility tests (#5527)
tcorringham Aug 15, 2023
37cf6dd
Move work graph CodeGen diagnostics to Sema (#5467) (#5577)
pow2clk Aug 22, 2023
9a2d4d8
Fix asserts when compiling node objects with -Od (#5598)
tex3d Aug 26, 2023
f9ceb57
Move entry diagnostics from SemaDXR to SemaHLSL (#5599)
tcorringham Aug 29, 2023
6b70096
[Test][NFC] Add shader stage attribute to test shaders (#5624)
bob80905 Aug 31, 2023
d34dc67
Consolidate EmitInstrNote into common function (#5615)
pow2clk Sep 5, 2023
af42292
Merge 'main' into 'staging-sm-6.8'
pow2clk Aug 31, 2023
58a9ac3
Merge branch 'main' into staging-sm-6.8 (#5621)
pow2clk Sep 6, 2023
816bc8c
Disallow multiple shader attributes from existing on a single declara…
bob80905 Sep 12, 2023
034ed24
[DCE] Move output complete removal code later to DCE (#5620)
bob80905 Sep 13, 2023
a79a8a0
Add profile target shader attribute to entry point function declarati…
bob80905 Sep 14, 2023
e7bbd88
Remove node + compute validation exemption in sema (#5726)
bob80905 Sep 15, 2023
bfa397a
StringSwitch CodeGen/HLops string->enums (#5735)
pow2clk Sep 15, 2023
3e9e771
WaveMatrix tests cleanup (#5724)
hekota Sep 18, 2023
88c5b41
Remove unneeded Sema equal param special case (#5734)
pow2clk Sep 18, 2023
eb252f0
Merge branch 'main' into 'staging-sm-6.8' (#5741)
pow2clk Sep 19, 2023
325096a
Merge commit 'd949f78f69c0620fdba7320c2014424f4ecdd14f' into cbienema…
llvm-beanz Sep 19, 2023
2169fc1
Merge remote-tracking branch 'origin/main' into cbieneman/clang-forma…
llvm-beanz Sep 19, 2023
a1bc696
[NFC] Merge clang-format into 6.8 staging (#5752)
llvm-beanz Sep 20, 2023
2325bc5
Add SampleCmpBias and SampleCmpGrad (#5716)
python3kgae Sep 21, 2023
16fa301
Merge remote-tracking branch 'origin/main' into
llvm-beanz Sep 21, 2023
2b7e144
Indicate extra metadata with unknown nodeio tag (#5711)
pow2clk Sep 21, 2023
d85fb12
Merge remote-tracking branch 'origin/main' into
llvm-beanz Sep 21, 2023
2b5f69f
Don't string match node type names (#5763)
llvm-beanz Sep 22, 2023
c0327d5
Remove implicit node records from being added when there are no node …
bob80905 Sep 22, 2023
b367ed0
Cbieneman/update staging 2023 09 21 (#5765)
llvm-beanz Sep 22, 2023
20f305c
Allow wavesize attribute on library shaders (#5758)
bob80905 Sep 27, 2023
6382d98
Add test for FieldAnnotationVectorSize and similar metadata tags (#5786)
hekota Sep 27, 2023
525824b
[NFC] Remove unneeded IsComplete parameter (#5793)
llvm-beanz Sep 27, 2023
006fbeb
Make NodeLaunch attribute strings case sensitive (#5622)
tcorringham Sep 27, 2023
f405983
Disallow NodeOutput or EmptyNodeOutput array node parameters (#5588)
tcorringham Oct 2, 2023
2099955
Make member expressions of bitfields emit as an RValue instead of LVa…
bob80905 Oct 3, 2023
da249d8
Improve library profile diagnostics (#5789)
bob80905 Oct 3, 2023
4a5c1ee
Move NodeMaxDispatchGrid diagnostic into Sema (#5806)
hekota Oct 4, 2023
d7d0d66
Allow SamplerComparisonState when CalculateLevelOfDetail (#5802)
python3kgae Oct 5, 2023
9ef3fdb
Flatten non-object parameters for node shaders (#5818)
python3kgae Oct 10, 2023
c03968f
Set tiled resource in shader flags. (#5830)
python3kgae Oct 10, 2023
bdd4a7f
Improve diagnostics for objects in node records (#5712)
tcorringham Oct 10, 2023
3870258
Amend compute node compatibility DXIL validation (#5589)
tcorringham Oct 10, 2023
b8a3529
Support [UnboundedSparseNodes] on node output (#5817)
tex3d Oct 10, 2023
deeb822
Update Barrier intrinsic to merge ACCESS and SYNC flags (#5825)
tex3d Oct 10, 2023
ec34e95
More NodeMaxDispatchGrid diagnostic fixes in Sema (#5844)
hekota Oct 10, 2023
85e6fbb
Fix clang diagnostics overflow in SEMA group; add static_assert (#5853)
tex3d Oct 11, 2023
50e0126
Support globallycoherent RWDispatchNodeInputRecord (#5816)
tex3d Oct 11, 2023
87daeb3
Exec test changes to enable build inside undocked Direct3D repo (#5856)
hekota Oct 12, 2023
2123869
Merge branch 'main' of into staging-sm-6.8
pow2clk Oct 12, 2023
b358aad
Merge main into staging-sm-6.8 (#5861)
pow2clk Oct 12, 2023
2775f19
allow [AllowSparseNodes] on non-array outputs (#5865)
tex3d Oct 13, 2023
95d3eeb
Allow DependentType for Node objects template argument. (#5833)
python3kgae Oct 16, 2023
c468d52
Add _FORCE_EXPERIMENTAL_SHADERS define to ExecutionTests (#5874)
hekota Oct 16, 2023
5eaf7a7
Remove implicit record to struct cast intrinsic (#5871)
bob80905 Oct 18, 2023
1db04a6
Remove unnecessary in C++11 c_str() calls (#5932) (#5933)
bob80905 Oct 26, 2023
6574b84
[Diag] disallow array of WaveMatrix (#5920)
python3kgae Oct 27, 2023
3d1b501
Add SV_BaseVertexLocation and SV_StartInstanceLocation to VSIn (#5770)
python3kgae Oct 31, 2023
8377726
Fix RDAT table versioning for ver 1.8 (#5943)
tex3d Nov 2, 2023
00cd76e
[Diag] report error when SV_DispatchGrid has illegal type. (#5953)
python3kgae Nov 2, 2023
cd03365
[Diagnostics] Improve recursion diagnostics, specifically for library…
bob80905 Nov 2, 2023
2377aa7
Format hctdb.py and hctdb_instrhelp.py with black for conflict resolu…
hekota Nov 2, 2023
96bb59b
Merge branch 'main' into merge-from-main-11-2-no3
hekota Nov 2, 2023
536972d
Add 2 verifier tests that were accidentally removed; update expected …
hekota Nov 2, 2023
627cf78
Update invalid_barrier_1.ll DXIL
hekota Nov 3, 2023
33d695a
Update SPIR-V submodules to be the same as main branch
hekota Nov 3, 2023
f12d91c
Add back shader attribute to couple of PIX dia tests
hekota Nov 3, 2023
273f431
One more conflict resolution fix
hekota Nov 3, 2023
de3339c
Merge main to staging-sm-6.8 (#5968)
tex3d Nov 3, 2023
3ab440c
Fix downlevel validation testing failures (#5979)
tex3d Nov 5, 2023
8f9c501
Merge branch 'staging-sm-6.8' of https://github.com/Microsoft/DirectX…
hekota Nov 6, 2023
3e25309
clang-format
hekota Nov 6, 2023
01cedea
Addressing code review feedback
hekota Nov 8, 2023
d5ddb1e
Clang formatting
hekota Nov 8, 2023
19fd70a
Merge branch 'main' of https://github.com/Microsoft/DirectXShaderComp…
hekota Nov 8, 2023
89fbd19
Fix typo in Decl.RayQueryInFnSig validation rule
hekota Nov 8, 2023
4b7b4ce
Fix typo in DXIL.rst
hekota Nov 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 44 additions & 3 deletions docs/DXIL.rst
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,8 @@ ViewID NotInSig _61 NA NotInSig _61 NotInSig _61 NA
Barycentrics NA NA NA NA NA NA NA NA NA NA NA NA NA NotPacked _61 NA NA NA NA NA NA
ShadingRate NA SV _64 NA NA SV _64 SV _64 NA NA SV _64 SV _64 SV _64 NA SV _64 SV _64 NA NA NA NA SV NA
CullPrimitive NA NA NA NA NA NA NA NA NA NA NA NA NA NotInSig NA NA NA NA NotPacked NA
StartVertexLocation NotInSig _68 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
StartInstanceLocation NotInSig _68 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
====================== ============ ======== ============ ============ ======== ======== ========== ============ ======== ======== ======== ============ ======== ============= ============= ======== ======== ======== ========= ========

.. SEMINT-TABLE-RST:END
Expand Down Expand Up @@ -2322,6 +2324,38 @@ ID Name Description
223 TextureGatherRaw Gather raw elements from 4 texels with no type conversions (SRV type is constrained)
224 SampleCmpLevel samples a texture and compares a single component against the specified comparison value
225 TextureStoreSample stores texel data at specified sample index
226 WaveMatrix_Annotate Annotate a wave matrix pointer with the type information
227 WaveMatrix_Depth Returns depth (K) value for matrix of specified type
228 WaveMatrix_Fill Fill wave matrix with scalar value
229 WaveMatrix_LoadRawBuf Load wave matrix from raw buffer
230 WaveMatrix_LoadGroupShared Load wave matrix from group shared array
231 WaveMatrix_StoreRawBuf Store wave matrix to raw buffer
232 WaveMatrix_StoreGroupShared Store wave matrix to group shared array
233 WaveMatrix_Multiply Mutiply left and right wave matrix and store in accumulator
234 WaveMatrix_MultiplyAccumulate Mutiply left and right wave matrix and accumulate into accumulator
235 WaveMatrix_ScalarOp Perform scalar operation on each element of wave matrix
236 WaveMatrix_SumAccumulate Sum rows or columns of an input matrix into an existing accumulator fragment matrix
237 WaveMatrix_Add Element-wise accumulate, or broadcast add of fragment into accumulator
238 AllocateNodeOutputRecords returns a handle for the output records
239 GetNodeRecordPtr retrieve node input/output record pointer in address space 6
240 IncrementOutputCount Select the next logical output count for an EmptyNodeOutput for the whole group or per thread.
241 OutputComplete indicates all outputs for a given records are complete
242 GetInputRecordCount returns the number of records that have been coalesced into the current thread group
243 FinishedCrossGroupSharing returns true if the current thread group is the last to access the input
244 BarrierByMemoryType Request a barrier for a set of memory types and/or thread group execution sync
245 BarrierByMemoryHandle Request a barrier for just the memory used by the specified object
246 BarrierByNodeRecordHandle Request a barrier for just the memory used by the node record
247 CreateNodeOutputHandle Creates a handle to a NodeOutput
248 IndexNodeHandle returns the handle for the location in the output node array at the indicated index
249 AnnotateNodeHandle annotate handle with node properties
250 CreateNodeInputRecordHandle create a handle for an InputRecord
251 AnnotateNodeRecordHandle annotate handle with node record properties
252 NodeOutputIsValid returns true if the specified output node is present in the work graph
253 GetRemainingRecursionLevels returns how many levels of recursion remain
254 SampleCmpGrad samples a texture using a gradient and compares a single component against the specified comparison value
255 SampleCmpBias samples a texture after applying the input bias to the mipmap level and compares a single component against the specified comparison value
256 StartVertexLocation returns the BaseVertexLocation from DrawIndexedInstanced or StartVertexLocation from DrawInstanced
257 StartInstanceLocation returns the StartInstanceLocation from Draw*Instanced
=== ===================================================== =======================================================================================================================================================================================================================


Expand Down Expand Up @@ -2984,26 +3018,31 @@ DECL.EXTRAARGS Extra arguments not allowed for shader
DECL.FNATTRIBUTE Functions should only contain known function attributes
DECL.FNFLATTENPARAM Function parameters must not use struct types
DECL.FNISCALLED Functions can only be used by call instructions
DECL.MULTIPLENODEINPUTS A node shader may not have more than one input record
DECL.NODELAUNCHINPUTTYPE Invalid input record type for node launch type
DECL.NOTUSEDEXTERNAL External declaration should not be used
DECL.PARAMSTRUCT Callable function parameter must be struct type
DECL.PAYLOADSTRUCT Payload parameter must be struct type
DECL.RAYQUERYINFNSIG Rayquery objects not allowed in function signatures
DECL.RESOURCEINFNSIG Resources not allowed in function signatures
DECL.SHADERMISSINGARG payload/params/attributes parameter is required for certain shader types
DECL.SHADERRETURNVOID Shader functions must return void
DECL.USEDEXTERNALFUNCTION External function must be used
DECL.USEDINTERNAL Internal declaration must be used
FLOW.DEADLOOP Loop must have break.
FLOW.FUNCTIONCALL Function with parameter is not permitted
FLOW.NORECUSION Recursion is not permitted.
FLOW.NORECURSION Recursion is not permitted.
FLOW.REDUCIBLE Execution flow must be reducible.
INSTR.ALLOWED Instructions must be of an allowed type.
INSTR.ATOMICCONST Constant destination to atomic.
INSTR.ATOMICINTRINNONUAV Non-UAV destination to atomic intrinsic.
INSTR.ATOMICOPNONGROUPSHARED Non-groupshared destination to atomic operation.
INSTR.ATOMICOPNONGROUPSHAREDORRECORD Non-groupshared or node record destination to atomic operation.
INSTR.ATTRIBUTEATVERTEXNOINTERPOLATION Attribute %0 must have nointerpolation mode in order to use GetAttributeAtVertex function.
INSTR.BARRIERMODEFORNONCS sync in a non-Compute/Amplification/Mesh Shader must only sync UAV (sync_uglobal).
INSTR.BARRIERFLAGINVALID Invalid %0 flags on DXIL operation '%1'
INSTR.BARRIERMODEFORNONCS sync in a non-Compute/Amplification/Mesh/Node Shader must only sync UAV (sync_uglobal).
INSTR.BARRIERMODENOMEMORY sync must include some form of memory barrier - _u (UAV) and/or _g (Thread Group Shared Memory). Only _t (thread group sync) is optional.
INSTR.BARRIERMODEUSELESSUGROUP sync can't specify both _ugroup and _uglobal. If both are needed, just specify _uglobal.
INSTR.BARRIERNONCONSTANTFLAGARGUMENT Memory type, access, or sync flag is not constant
INSTR.BUFFERUPDATECOUNTERONRESHASCOUNTER BufferUpdateCounter valid only when HasCounter is true.
INSTR.BUFFERUPDATECOUNTERONUAV BufferUpdateCounter valid only on UAV.
INSTR.CALLOLOAD Call to DXIL intrinsic must match overload signature
Expand All @@ -3029,6 +3068,7 @@ INSTR.MIPONUAVLOAD uav load don't support mipLevel/sample
INSTR.MISSINGSETMESHOUTPUTCOUNTS Missing SetMeshOutputCounts call.
INSTR.MULTIPLEGETMESHPAYLOAD GetMeshPayload cannot be called multiple times.
INSTR.MULTIPLESETMESHOUTPUTCOUNTS SetMeshOUtputCounts cannot be called multiple times.
INSTR.NODERECORDHANDLEUSEAFTERCOMPLETE Invalid use of completed record handle.
INSTR.NOGENERICPTRADDRSPACECAST Address space cast between pointer types must have one part to be generic address space.
INSTR.NOIDIVBYZERO No signed integer division by zero.
INSTR.NOINDEFINITEACOS No indefinite arccosine.
Expand Down Expand Up @@ -3087,6 +3127,7 @@ META.BARYCENTRICSTWOPERSPECTIVES There can only be up to two input attr
META.BRANCHFLATTEN Can't use branch and flatten attributes together.
META.CLIPCULLMAXCOMPONENTS Combined elements of SV_ClipDistance and SV_CullDistance must fit in 8 components
META.CLIPCULLMAXROWS Combined elements of SV_ClipDistance and SV_CullDistance must fit in two rows.
META.COMPUTEWITHNODE Compute entry must not have node metadata
META.CONTROLFLOWHINTNOTONCONTROLFLOW Control flow hint only works on control flow inst.
META.DENSERESIDS Resource identifiers must be zero-based and dense.
META.DUPLICATESYSVALUE System value may only appear once in signature
Expand Down
1 change: 1 addition & 0 deletions include/dxc/DXIL/DXIL.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "dxc/DXIL/DxilConstants.h"
#include "dxc/DXIL/DxilInterpolationMode.h"
#include "dxc/DXIL/DxilModule.h"
#include "dxc/DXIL/DxilNodeProps.h"
#include "dxc/DXIL/DxilOperations.h"
#include "dxc/DXIL/DxilResource.h"
#include "dxc/DXIL/DxilSampler.h"
Expand Down
Loading