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

[SPIR-V] Fix mesh shader output reads with SPV_NV_mesh_shader #9035

Open

Description

Description
GL_NV_mesh_shader  lets a mesh shader read back its own outputs, but DXC's SPIR-V back-end handles HLSL reads of mesh outputs badly under  SPV_NV_mesh_shader :

• Reading a whole output element, such as  verts[2] = verts[1]; , is rejected by a Sema error.
• Reading a member or component, such as  verts[0].pos , is accepted but compiles to  OpUndef  instead of a load from the Output variable. The shader silently computes garbage.

Steps to Reproduce

struct VertOut {
  float4 pos : SV_Position;
  float3 color : COLOR0;
};

[outputtopology("triangle")]
[numthreads(1, 1, 1)]
void main(out vertices VertOut verts[3], out indices uint3 tris[1]) {
  SetMeshOutputCounts(3, 1);
  verts[0].pos = float4(0, 0, 0, 1);
  verts[0].color = float3(1, 0, 0);
  verts[1].pos = verts[0].pos + float4(1, 0, 0, 0);
  verts[1].color = verts[0].color.zyx;
  verts[2] = verts[1];
  tris[0] = uint3(0, 1, 2);
}

 dxc -T ms_6_5 -E main -spirv -fspv-target-env=vulkan1.3 -fspv-extension=SPV_NV_mesh_shader t.hlsl

Actual Behavior

t.hlsl:14:14: error: output arrays of a mesh shader can not be read from
  verts[2] = verts[1];
             ^

With line 14 removed, compilation succeeds, but the member reads become  OpUndef :

%34 = OpUndef %v4float
%35 = OpUndef %v3float
%39 = OpFAdd %v4float %34 %17
%41 = OpVectorShuffle %v3float %35 %35 2 1 0

Expected: each read loads from  gl_Position  /  out_var_COLOR0  at the given index.

Environment

  • DXC version 1.10.2609.0
  • Host Operating System Windows
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugBug, regression, crashneeds-triageAwaiting triagespirvWork related to SPIR-V

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions