summaryrefslogtreecommitdiff
path: root/tests/metal
diff options
context:
space:
mode:
authorDynamitos <dynamitos15@gmail.com>2024-08-28 21:07:49 +0200
committerGitHub <noreply@github.com>2024-08-28 12:07:49 -0700
commit7c6b71bcbd7821e251541f5dd723428d7bd5a2ed (patch)
tree8826ee68bdfc2cdf21e730a166ef44df21b6049a /tests/metal
parent65240d074b4ddec55e56962ebf8de46207bcf5fa (diff)
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 <yonghe@outlook.com>
Diffstat (limited to 'tests/metal')
-rw-r--r--tests/metal/simple-task.slang14
1 files changed, 12 insertions, 2 deletions
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<Vertex, MAX_VERTS> verts,
- OutputIndices<uint3, MAX_PRIMS> triangles)
+ OutputIndices<uint3, MAX_PRIMS> triangles,
+ OutputPrimitives<Primitive, MAX_PRIMS> 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 };
+ }
}
//