[HLSL] Add LinAlg runtime capability handling#8667
Draft
JoeCitizen wants to merge 5 commits into
Draft
Conversation
Use the shared MatrixUse parameter for the OuterProduct result and set it to Accumulator, matching proposal 0035 and the public dx::linalg API. Add a host-side invariant to prevent the legacy A-use declaration from returning. Assisted-by: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Create SRV buffers without UAV flags and transition them for both pixel and non-pixel shader access. Use a direct resource-initialization list so the graphics-only pixel state is legal. Assisted-by: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add typed F16, F32, I32, and U32 matrix data with safe byte encoding, rectangular row/column-major storage mapping, and explicit exact, permitted-result, or excluded comparison policy. Cover offsets and padded strides with independent host goldens, and migrate the existing CopyConvert tests onto the oracle. Assisted-by: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add ABI-checked wrappers for the six D3D12 Linear Algebra capability query categories and explicit applicability classification. Gate the rectangular F32 CopyConvert case using concrete supported wave sizes. Assisted-by: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Compile capability-gated CopyConvert coverage at the exact wave size whose MatrixConstruction support was queried. Keep mandatory baseline cases on the existing ranged WaveSize attribute. Assisted-by: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
This was referenced Jul 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CopyConvert_Wave_4x8_F32_Transposeusing the advertised tier, source/destination MatrixConstruction minima, and the exact concrete wave size selected by the successful queryThe inbox Windows SDK does not yet expose the Linear Algebra capability ABI. The runtime path therefore uses private test-only mirrors for feature IDs 77 and 78; preview-header builds activate size, alignment, offset, enum and feature-ID assertions so ABI drift fails compilation.
Unsupported capability-gated cases are skipped in focused developer runs. Under
_HLK_CONF, reaching one is a failure because requirement/playlist applicability must have filtered it before execution. Existing mandatory F16 CopyConvert baselines remain ungated.Validation
ExecHLSLTeststargetLinAlgCapabilityTests::CapabilityPolicyAndPredicatesLinAlgCPUOracleTests::TypedMatrixBufferRoundTrip1.65535.20-previewwith D3D12 Agility SDK1.721.2-previewandExperimentalShaders=*0x10; the representative Float32/wave-4 MatrixConstruction query returnedMinM=4,MinK=4,MinN=4, and the gated shader compiled withFORCED_WAVE_SIZE=4git diff --check, and focused correctness review passNo physical GPU or HLK lab execution is claimed.
Stack
This draft is stacked on PR #8666, which is stacked on PR #8665 and PR #8662. Until those ancestors land, this diff contains their commits as well. The capability handling is commits
7439d3dedand111c2a902; the follow-up pins the capability-gated shader to the exact queried wave size.This is intentionally a draft for named human review. The reviewer should verify the test-only ABI mirror against the target preview SDK, the query-response invariants, and the
_HLK_CONFapplicability policy before requesting maintainer review.Refs #7841
Refs #8647
Refs #8546
Assisted-by: GitHub Copilot