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

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'reference/shaders-no-opt/asm/frag/subgroup-ballot-only.vk.asm.frag')
-rw-r--r--reference/shaders-no-opt/asm/frag/subgroup-ballot-only.vk.asm.frag32
1 files changed, 32 insertions, 0 deletions
diff --git a/reference/shaders-no-opt/asm/frag/subgroup-ballot-only.vk.asm.frag b/reference/shaders-no-opt/asm/frag/subgroup-ballot-only.vk.asm.frag
new file mode 100644
index 00000000..8a918c03
--- /dev/null
+++ b/reference/shaders-no-opt/asm/frag/subgroup-ballot-only.vk.asm.frag
@@ -0,0 +1,32 @@
+#version 450
+
+#if defined(GL_KHR_shader_subgroup_ballot)
+#extension GL_KHR_shader_subgroup_ballot : require
+#elif defined(GL_NV_shader_thread_group)
+#extension GL_NV_shader_thread_group : require
+#elif defined(GL_ARB_shader_ballot) && defined(GL_ARB_shader_int64)
+#extension GL_ARB_shader_int64 : enable
+#extension GL_ARB_shader_ballot : require
+#else
+#error No extensions available to emulate requested subgroup feature.
+#endif
+
+layout(location = 0) flat in uint INDEX;
+layout(location = 0) out uvec4 SV_Target;
+
+#if defined(GL_KHR_shader_subgroup_ballot)
+#elif defined(GL_NV_shader_thread_group)
+uvec4 subgroupBallot(bool v) { return uvec4(ballotThreadNV(v), 0u, 0u, 0u); }
+#elif defined(GL_ARB_shader_ballot)
+uvec4 subgroupBallot(bool v) { return uvec4(unpackUint2x32(ballotARB(v)), 0u, 0u); }
+#endif
+
+void main()
+{
+ uvec4 _21 = subgroupBallot(INDEX < 100u);
+ SV_Target.x = _21.x;
+ SV_Target.y = _21.y;
+ SV_Target.z = _21.z;
+ SV_Target.w = _21.w;
+}
+