SPIRV-Cross/reference/shaders-no-opt/asm/task/task-shader.vk.nocompat.invalid.spv14.asm.task.vk
Hans-Kristian Arntzen 4c345166dc GLSL: Implement task shaders.
Due to bugged glslang / spirv-tools w.r.t. terminator instructions,
add a hack to ignore invalid SPIR-V for the time being.
2022-09-05 12:31:22 +02:00

36 lines
838 B
Plaintext

#version 450
#extension GL_EXT_mesh_shader : require
layout(local_size_x = 4, local_size_y = 3, local_size_z = 2) in;
struct Payload
{
float v[3];
};
shared float vs[24];
taskPayloadSharedEXT Payload p;
void main()
{
vs[gl_LocalInvocationIndex] = 10.0;
barrier();
if (gl_LocalInvocationIndex < 12u)
{
vs[gl_LocalInvocationIndex] += vs[gl_LocalInvocationIndex + 12u];
}
barrier();
if (gl_LocalInvocationIndex < 6u)
{
vs[gl_LocalInvocationIndex] += vs[gl_LocalInvocationIndex + 6u];
}
barrier();
if (gl_LocalInvocationIndex < 3u)
{
vs[gl_LocalInvocationIndex] += vs[gl_LocalInvocationIndex + 3u];
}
barrier();
p.v[gl_LocalInvocationIndex] = vs[gl_LocalInvocationIndex];
EmitMeshTasksEXT(uint(int(vs[4])), uint(int(vs[6])), uint(int(vs[8])));
}