diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-09-05 14:16:49 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-09-05 14:20:57 +0300 |
commit | d27d1d4cd197535c0f8f246dc0d826f0e3f0b5f6 (patch) | |
tree | ae7e2dd8488833b56959c7918b776b6c48f504a8 | |
parent | e9cfdb57ddf4ad50fc58ca233201d5461abd5fdf (diff) |
Add basic task shader test.
-rw-r--r-- | reference/shaders/stages/task-basic.task | 74 | ||||
-rw-r--r-- | shaders/stages/task-basic.task | 13 |
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); +} |