glsl.es320.subgroupBallotNeg.comp 992 B

123456789101112131415161718192021222324252627282930313233
  1. #version 450
  2. #extension GL_KHR_shader_subgroup_ballot: enable
  3. layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
  4. layout(binding = 0) buffer Buffers
  5. {
  6. vec4 f4;
  7. ivec4 i4;
  8. uvec4 u4;
  9. } data[4];
  10. void main()
  11. {
  12. uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
  13. uvec4 relMask = gl_SubgroupEqMask +
  14. gl_SubgroupGeMask +
  15. gl_SubgroupGtMask +
  16. gl_SubgroupLeMask +
  17. gl_SubgroupLtMask;
  18. uvec4 result = subgroupBallot(true);
  19. data[0].u4.x = subgroupBallotBitCount(result);
  20. data[0].u4.y = subgroupBallotBitExtract(result, 0) ? 1u : 0u;
  21. data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
  22. data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
  23. data[1].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
  24. }