@@ -13,16 +13,30 @@ namespace hlsl
13
13
{
14
14
namespace glsl
15
15
{
16
- uint32_t4 gl_SubgroupEqMask () {
17
- return uint32_t4 (0 , 0 , 0 , 1 ) << gl_SubgroupInvocationID ();
16
+
17
+ uint32_t4 gl_SubgroupEqMask ()
18
+ {
19
+ const uint32_t comp = gl_SubgroupInvocationID ()>>5 ;
20
+ uint32_t4 retval = uint32_t4 (0 ,0 ,0 ,0 );
21
+ retval[comp] = 0x1u<<(gl_SubgroupInvocationID ()&31u);
22
+ return retval;
18
23
}
19
24
20
- uint32_t4 gl_SubgroupGeMask () {
21
- return uint32_t4 (0xffffffffu, 0xffffffffu, 0xffffffffu, 0xffffffffu) << gl_SubgroupInvocationID ();
25
+ uint32_t4 gl_SubgroupGeMask ()
26
+ {
27
+ const uint32_t FullBits = 0xffffffffu;
28
+ const uint32_t comp = gl_SubgroupInvocationID ()>>5 ;
29
+ uint32_t4 retval = uint32_t4 (comp>0 ? 0u:FullBits,comp>1 ? 0u:FullBits,comp>2 ? 0u:FullBits,0u);
30
+ retval[comp] = FullBits<<(gl_SubgroupInvocationID ()&31u);
31
+ return retval;
22
32
}
23
33
24
- uint32_t4 gl_SubgroupGtMask () {
25
- return gl_SubgroupGeMask () << 1 ;
34
+ uint32_t4 gl_SubgroupGtMask ()
35
+ {
36
+ uint32_t4 retval = gl_SubgroupGeMask ();
37
+ const uint32_t comp = gl_SubgroupInvocationID ()>>5 ;
38
+ retval[comp] = 0xfffffffeu<<(gl_SubgroupInvocationID ()&31u);
39
+ return retval;
26
40
}
27
41
28
42
uint32_t4 gl_SubgroupLeMask () {
0 commit comments