1617a3babSopenharmony_ci#version 450 2617a3babSopenharmony_ci 3617a3babSopenharmony_ci#extension GL_KHR_shader_subgroup_ballot: enable 4617a3babSopenharmony_ci 5617a3babSopenharmony_cilayout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; 6617a3babSopenharmony_ci 7617a3babSopenharmony_cilayout(binding = 0) buffer Buffers 8617a3babSopenharmony_ci{ 9617a3babSopenharmony_ci vec4 f4; 10617a3babSopenharmony_ci ivec4 i4; 11617a3babSopenharmony_ci uvec4 u4; 12617a3babSopenharmony_ci} data[4]; 13617a3babSopenharmony_ci 14617a3babSopenharmony_civoid main() 15617a3babSopenharmony_ci{ 16617a3babSopenharmony_ci uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u; 17617a3babSopenharmony_ci 18617a3babSopenharmony_ci uvec4 relMask = gl_SubgroupEqMask + 19617a3babSopenharmony_ci gl_SubgroupGeMask + 20617a3babSopenharmony_ci gl_SubgroupGtMask + 21617a3babSopenharmony_ci gl_SubgroupLeMask + 22617a3babSopenharmony_ci gl_SubgroupLtMask; 23617a3babSopenharmony_ci 24617a3babSopenharmony_ci uvec4 result = subgroupBallot(true); 25617a3babSopenharmony_ci 26617a3babSopenharmony_ci data[0].u4.x = subgroupBallotBitCount(result); 27617a3babSopenharmony_ci data[0].u4.y = subgroupBallotBitExtract(result, 0) ? 1u : 0u; 28617a3babSopenharmony_ci data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result); 29617a3babSopenharmony_ci data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result); 30617a3babSopenharmony_ci 31617a3babSopenharmony_ci data[1].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant 32617a3babSopenharmony_ci} 33