Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

Skip to content

Mesh output write fixes - #9034

Open
Steve Urquhart (SteveUrquhart) wants to merge 7 commits into
microsoft:mainfrom
SteveUrquhart:mesh-output-write-fixes
Open

Steve Urquhart (SteveUrquhart) wants to merge 7 commits into
microsoft:mainfrom
SteveUrquhart:mesh-output-write-fixes

Conversation

@SteveUrquhart

Copy link
Copy Markdown
Contributor

Addresses 3 SPIRV mesh shader write bugs as outlined in #9033.

This PR conflicts with #8057, so I will need to update it after 8057 is accepted.

I'm also interested in #8982. I trimmed a lesser solution from this PR, but I'd need 8982 before proceeding with several more mesh shader PR's that I'd like to open. They depend on these 3, so for now I'll create issues. Diego Novillo (@dnovillo)

Copilot AI balanced review requested due to automatic review settings October 15, 2026 20:04
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

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

Output-argument handling still has incorrect copy-back behavior and an incomplete read diagnostic.

3 open findings
What changed in this PR

Addresses three SPIR-V mesh-output write bugs from #9033; inherited-struct support remains covered by #8982.

Changes:

  • Adds mesh-output copy-back for out arguments and rejects unreadable inout arguments.
  • Fixes position-component Y inversion and boolean-vector storage conversion.
  • Adds regression tests and upcoming-release notes.
File Description
tools/​clang/​test/​CodeGenSPIRV/​meshshading.write-outputs.out-arg.mesh.hlsl Tests output-argument writes and diagnostics.
tools/​clang/​test/​CodeGenSPIRV/​meshshading.write-outputs.invert-y-component.mesh.hlsl Tests component-wise Y inversion.
tools/​clang/​test/​CodeGenSPIRV/​meshshading.write-outputs.bool-vector.mesh.hlsl Tests boolean-vector output conversion.
tools/​clang/​lib/​SPIRV/​SpirvEmitter.cpp Implements mesh-output write fixes.
docs/​ReleaseNotes.md Documents the three fixes.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp Outdated
Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp Outdated
Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp
Copilot AI balanced review requested due to automatic review settings October 15, 2026 22:28

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

Output-argument handling still mishandles one-element vector swizzles and static data members.

2 open findings
3 resolved since last review

🧠 Review effort: Balanced

Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp Outdated
Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp
Copilot AI balanced review requested due to automatic review settings October 15, 2026 22:45

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

Mesh-qualified helper calls can overwrite valid outputs, and matrix-element output arguments still silently lose writes.

2 open findings
2 resolved since last review

🧠 Review effort: Balanced

Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp Outdated
Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp Outdated
Copilot AI balanced review requested due to automatic review settings October 15, 2026 23:04

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

Shared call-lowering changes, unresolved correctness issues, and the stated conflict with #8057 require human integration review.

1 open finding
2 resolved since last review
Previously missed (2)

In code that hasn't changed since last review

Medium severity Scalar swizzle normalization rejects valid chained swizzles

tools/​clang/​lib/​SPIRV/​SpirvEmitter.cpp:3408

setFloat(vertices[0].position.y.x) is a valid scalar swizzle, but the new argument handling rejects it. Condensing .x stops at the scalar-to-float1 splat; removing that splat exposes .y, which collectMSOutDest cannot collect. Repeat swizzle normalization after removing scalar splats so the inner component is preserved, and add this call to the regression test.

Medium severity Parenthesized mesh output arguments are incorrectly rejected

tools/​clang/​lib/​SPIRV/​SpirvEmitter.cpp:3427

setFloat((vertices[0]).value) is rejected as an unsupported mesh output argument, although it is equivalent to the supported unparenthesized call. isMSOutputAccess unwraps parentheses, but collectArrayStructIndices stops at the ParenExpr beneath the member access and never identifies the output array. Normalize expr with IgnoreParens() at the start of each recursive collection step, and add this spelling to the out-argument regression test.

🧠 Review effort: Balanced

Comment thread tools/clang/lib/SPIRV/SpirvEmitter.cpp
Copilot AI balanced review requested due to automatic review settings October 16, 2026 16:57

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

Shared call and assignment lowering changes need human validation across EXT/NV paths and integration with the acknowledged #8057 conflict.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

This branch has not been deployed

No deployments
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.

2 participants