Skip to content

RDAT: Reserve mesh-node preview table identifiers - #9099

Merged
Jesse Natalie (jenatali) merged 1 commit into
microsoft:mainfrom
jenatali:reserve-mesh-node-rdat-ids
Nov 5, 2026
Merged

Jesse Natalie (jenatali) merged 1 commit into
microsoft:mainfrom
jenatali:reserve-mesh-node-rdat-ids

Conversation

@jenatali

Copy link
Copy Markdown
Member

Reserve the experimental shader-info table IDs serialized by the mesh-node preview, not just its dedicated table ID. Move the new LinAlg tables above the reserved range and recognize legacy shader-info IDs when reading RDAT.

Keep current experimental tables above the released range so released shader targets do not start emitting experimental metadata. Add regression cases for all legacy table IDs and for legacy mesh info alongside the relocated extended function properties.

Compiler packages and RDAT consumers must be updated together because the new LinAlg table IDs change.

Copilot AI balanced review requested due to automatic review settings November 4, 2026 22:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The serialized LinAlg metadata renumbering requires coordinated compiler-package and RDAT-consumer updates, but this compatibility requirement is missing from the release notes.

1 open issue
What changed in this PR

This PR preserves RDAT compatibility with mesh-node preview metadata by reserving its serialized table IDs and relocating LinAlg tables. Compiler packages and RDAT consumers must be updated together.

Changes:

  • Reserve legacy shader-info IDs 13–21 and relocate LinAlg-related tables to IDs 22–29.
  • Map legacy shader-info IDs to the current reader tables.
  • Add regression tests for all legacy shader-info IDs and legacy mesh info alongside relocated extended function properties.
File Description
tools/​clang/​unittests/​HLSL/​DxilContainerTest.cpp Adds legacy-ID and mixed-table compatibility tests.
include/​dxc/​DxilContainer/​DxilRuntimeReflection.inl Recognizes legacy preview shader-info IDs when reading RDAT.
include/​dxc/​DxilContainer/​DxilRuntimeReflection.h Reserves preview IDs and relocates LinAlg-related table IDs.

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 4, 2026 23:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

All nine experimental shader-info table IDs fall below LastRelease, and LastExperimental equals LastRelease, so the public enum no longer separates released and experimental tables.

2 open issues

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 5, 2026 00:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Active experimental shader-info IDs fall within the released range, breaking the required public-enum separation, and the serialized RDAT compatibility change lacks release-note coverage.

2 open issues

Review effort: Balanced

@llvm-beanz Chris B (llvm-beanz) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems unfortunate, but reasonable to me given the constraints.

Keep the experimental shader-info tables at IDs 13-21 used by the mesh-node preview and move LinAlg tables to IDs 22-29. Use one set of identifiers for both emitted and previously compiled metadata.

Gate experimental shader-info table emission independently of ID ordering. Released validated targets must omit these tables, while prerelease targets and validator 0.0 retain existing experimental behavior. Add wire-compatibility regressions and strengthen the existing SM6.10 emission checks.

Compiler packages and RDAT consumers must be updated together because the new LinAlg table IDs change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9ff1c28a-cad2-4e86-9c05-8d1cc1a2744e
Copilot AI balanced review requested due to automatic review settings November 5, 2026 17:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the RDAT compatibility and experimental-metadata filtering changes.

No open issues 🎉

2 resolved since last review

Review effort: Balanced

@jenatali
Jesse Natalie (jenatali) merged commit bf6a879 into microsoft:main Nov 5, 2026
12 checks passed
@jenatali
Jesse Natalie (jenatali) deleted the reserve-mesh-node-rdat-ids branch November 5, 2026 20:03
@github-project-automation github-project-automation Bot moved this from New to Done in HLSL Roadmap Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants