From 7c6b71bcbd7821e251541f5dd723428d7bd5a2ed Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Wed, 28 Aug 2024 21:07:49 +0200 Subject: Metal: Mesh Shaders (#4280) * Metal: mesh shading skeleton * Metal: fixing mesh payload * Metal: improving mesh shader indices output * Metal: Implementing conditional mesh output set * Metal: Trying to not break other backends * Metal: trying to fix mesh output set * Metal: Fixing MeshOutputSet usages * Metal: Fixing vertex and primitive semantics * Metal: Fixing code style * Metal: Fixed hlsl indices set * Fixed HLSL mesh output set disappearing and GLSL mesh output crashing * Metal: Adjusting task test matching --------- Co-authored-by: Yong He --- tests/metal/simple-task.slang | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/metal/simple-task.slang b/tests/metal/simple-task.slang index fa38f6043..4a12719d0 100644 --- a/tests/metal/simple-task.slang +++ b/tests/metal/simple-task.slang @@ -18,7 +18,7 @@ struct MeshPayload int exponent; }; -// CHECK: MeshPayload_0 object_data& _slang_mesh_payload +// CHECK: MeshPayload_0 object_data* _slang_mesh_payload // CHECK: mesh_grid_properties _slang_mgp [numthreads(1,1,1)] void taskMain() @@ -54,6 +54,11 @@ struct Vertex int value : Value; }; +struct Primitive +{ + uint prim : SV_PrimitiveID; +}; + const static uint MAX_VERTS = 12; const static uint MAX_PRIMS = 4; @@ -66,7 +71,9 @@ void meshMain( // requires: // HLSL: , in payload MeshPayload OutputVertices verts, - OutputIndices triangles) + OutputIndices triangles, + OutputPrimitives primitives + ) { const uint numVertices = 12; const uint numPrimitives = 4; @@ -79,7 +86,10 @@ void meshMain( } if (tig < numPrimitives) + { triangles[tig] = tig * 3 + uint3(0, 1, 2); + primitives[tig] = { tig }; + } } // -- cgit v1.2.3