Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/dxil-spirv.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2022-09-05 14:16:49 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2022-09-05 14:20:57 +0300
commitd27d1d4cd197535c0f8f246dc0d826f0e3f0b5f6 (patch)
treeae7e2dd8488833b56959c7918b776b6c48f504a8
parente9cfdb57ddf4ad50fc58ca233201d5461abd5fdf (diff)
Add basic task shader test.
-rw-r--r--reference/shaders/stages/task-basic.task74
-rw-r--r--shaders/stages/task-basic.task13
2 files changed, 87 insertions, 0 deletions
diff --git a/reference/shaders/stages/task-basic.task b/reference/shaders/stages/task-basic.task
new file mode 100644
index 0000000..9a42de6
--- /dev/null
+++ b/reference/shaders/stages/task-basic.task
@@ -0,0 +1,74 @@
+#version 460
+#extension GL_EXT_mesh_shader : require
+layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
+
+struct _11
+{
+ float _m0[64][4];
+};
+
+taskPayloadSharedEXT _11 _13;
+
+void main()
+{
+ float _17 = float(gl_LocalInvocationIndex);
+ _13._m0[gl_LocalInvocationIndex][0u] = _17;
+ _13._m0[gl_LocalInvocationIndex][1u] = _17;
+ _13._m0[gl_LocalInvocationIndex][2u] = _17;
+ _13._m0[gl_LocalInvocationIndex][3u] = _17;
+ EmitMeshTasksEXT(2u, 3u, 4u);
+}
+
+
+#if 0
+// SPIR-V disassembly
+; SPIR-V
+; Version: 1.4
+; Generator: Unknown(30017); 21022
+; Bound: 29
+; Schema: 0
+OpCapability Shader
+OpCapability MeshShadingEXT
+OpExtension "SPV_EXT_mesh_shader"
+OpMemoryModel Logical GLSL450
+OpEntryPoint TaskEXT %3 "main" %13 %15
+OpExecutionMode %3 LocalSize 64 1 1
+OpName %3 "main"
+OpName %11 ""
+OpDecorate %15 BuiltIn LocalInvocationIndex
+%1 = OpTypeVoid
+%2 = OpTypeFunction %1
+%5 = OpTypeInt 32 0
+%6 = OpConstant %5 64
+%7 = OpConstant %5 4
+%8 = OpTypeFloat 32
+%9 = OpTypeArray %8 %7
+%10 = OpTypeArray %9 %6
+%11 = OpTypeStruct %10
+%12 = OpTypePointer TaskPayloadWorkgroupEXT %11
+%13 = OpVariable %12 TaskPayloadWorkgroupEXT
+%14 = OpTypePointer Input %5
+%15 = OpVariable %14 Input
+%18 = OpTypePointer TaskPayloadWorkgroupEXT %8
+%20 = OpConstant %5 0
+%22 = OpConstant %5 1
+%24 = OpConstant %5 2
+%26 = OpConstant %5 3
+%3 = OpFunction %1 None %2
+%4 = OpLabel
+OpBranch %27
+%27 = OpLabel
+%16 = OpLoad %5 %15
+%17 = OpConvertUToF %8 %16
+%19 = OpAccessChain %18 %13 %20 %16 %20
+OpStore %19 %17
+%21 = OpAccessChain %18 %13 %20 %16 %22
+OpStore %21 %17
+%23 = OpAccessChain %18 %13 %20 %16 %24
+OpStore %23 %17
+%25 = OpAccessChain %18 %13 %20 %16 %26
+OpStore %25 %17
+OpEmitMeshTasksEXT %24 %26 %7 %13
+OpReturn
+OpFunctionEnd
+#endif
diff --git a/shaders/stages/task-basic.task b/shaders/stages/task-basic.task
new file mode 100644
index 0000000..755bbdf
--- /dev/null
+++ b/shaders/stages/task-basic.task
@@ -0,0 +1,13 @@
+struct Payload
+{
+ float4 p[64];
+};
+
+groupshared Payload p;
+
+[numthreads(64, 1, 1)]
+void main(uint tid : SV_GroupIndex)
+{
+ p.p[tid] = float(tid).xxxx;
+ DispatchMesh(2, 3, 4, p);
+}