Skip to content

[HLSL] Add LinAlg descriptor I/O coverage#8669

Draft
JoeCitizen wants to merge 7 commits into
microsoft:mainfrom
JoeCitizen:linalg-hlk-descriptor-io-coverage
Draft

[HLSL] Add LinAlg descriptor I/O coverage#8669
JoeCitizen wants to merge 7 commits into
microsoft:mainfrom
JoeCitizen:linalg-hlk-descriptor-io-coverage

Conversation

@JoeCitizen

Copy link
Copy Markdown
Collaborator

Summary

  • bind LinAlg descriptor tests through shader-visible bounded raw SRV/UAV views instead of unbounded root descriptors
  • add independent whole-buffer oracles for row/column-major layouts, non-zero offsets, padded strides, guard bytes, and both specification-permitted descriptor-bounds outcomes
  • add exact-wave capability-gated F16/F32 load/store coverage and independently gated F32 atomic-accumulate bounds coverage

Exact layout cases run in both directions between the target representation and a canonical packed row-major representation, so matching load/store layout bugs cannot cancel in a symmetric round trip.

The store and atomic-accumulate bounds families are separate TAEF methods because their runtime capability queries and applicability decisions are independent.

Validation

  • built the Release ExecHLSLTests target
  • passed the capability-policy and typed CPU-oracle host tests
  • passed all five item-F element tests and all three CopyConvert regressions
  • passed both mandatory F16 descriptor baselines plus five new descriptor layout/bounds methods on WARP 1.65535.20-preview, Agility SDK 1.721.2-preview, and ExperimentalShaders=*
  • compiled HlslExecTestUtils.cpp and LinAlgTests.cpp against the preview D3D12 headers, activating the LinAlg ABI assertions
  • clang-format 17.0.1 and git diff --check pass

No physical GPU or HLK lab execution is claimed.

Stack

This draft is stacked on PR #8668, which is stacked on PR #8667, PR #8666, PR #8665, and PR #8662. Until those ancestors land, this diff contains their commits as well. The descriptor-I/O change itself is commit 866589081.

This remains a draft for named human review. The reviewer should verify the bounded-view construction, independent layout expectations, complete permitted-result sets, and capability/applicability split before requesting maintainer review.

Refs #7841
Refs #8651
Refs #8547
Refs #8553
Refs #8561

Assisted-by: GitHub Copilot

Jack Elliott and others added 7 commits July 23, 2026 14:52
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
Add rectangular Length/GetCoordinate/GetElement coverage and the specified Get/Set out-of-bounds behaviour. Capture thread-local matrix records without UAV races and gate optional F32 cases at the exact queried wave size.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add bounded raw descriptor-table bindings and independent whole-buffer
oracles for LinAlg descriptor operations. Cover non-zero offsets, padded
strides, row/column-major transfer, descriptor bounds, and capability-gated
atomic accumulation.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: New

Development

Successfully merging this pull request may close these issues.

1 participant