mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
Enable GL_KHR_shader_subgroup properly
(and GL_NV_shader_subgroup_partitioned) based on GL/ES version instead of predicating it on vulkan SPV generation Also add AST testing. The glsl.450.subgroup* files are largely the same as the spv.subgroup* The glsl.es320.subgroup* files are the same as the 450 versions, but modified to be ES compatible.
This commit is contained in:
parent
5efb004d59
commit
83170e3f7a
41
Test/baseResults/glsl.450.subgroup.frag.out
Normal file
41
Test/baseResults/glsl.450.subgroup.frag.out
Normal file
@ -0,0 +1,41 @@
|
||||
glsl.450.subgroup.frag
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:4 Function Definition: main( ( global void)
|
||||
0:4 Function Parameters:
|
||||
0:6 Sequence
|
||||
0:6 move second child to first child ( temp 4-component vector of uint)
|
||||
0:6 'data' (layout( location=0) out 4-component vector of uint)
|
||||
0:6 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable)
|
||||
0:6 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'data' (layout( location=0) out 4-component vector of uint)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:4 Function Definition: main( ( global void)
|
||||
0:4 Function Parameters:
|
||||
0:6 Sequence
|
||||
0:6 move second child to first child ( temp 4-component vector of uint)
|
||||
0:6 'data' (layout( location=0) out 4-component vector of uint)
|
||||
0:6 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable)
|
||||
0:6 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'data' (layout( location=0) out 4-component vector of uint)
|
||||
|
59
Test/baseResults/glsl.450.subgroup.geom.out
Normal file
59
Test/baseResults/glsl.450.subgroup.geom.out
Normal file
@ -0,0 +1,59 @@
|
||||
glsl.450.subgroup.geom
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
invocations = -1
|
||||
max_vertices = 1
|
||||
input primitive = points
|
||||
output primitive = points
|
||||
0:? Sequence
|
||||
0:10 Function Definition: main( ( global void)
|
||||
0:10 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp 4-component vector of uint)
|
||||
0:12 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 'gl_PrimitiveIDIn' ( in int PrimitiveID)
|
||||
0:12 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:12 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:12 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
|
||||
|
||||
Linked geometry stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
invocations = 1
|
||||
max_vertices = 1
|
||||
input primitive = points
|
||||
output primitive = points
|
||||
0:? Sequence
|
||||
0:10 Function Definition: main( ( global void)
|
||||
0:10 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp 4-component vector of uint)
|
||||
0:12 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 'gl_PrimitiveIDIn' ( in int PrimitiveID)
|
||||
0:12 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:12 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:12 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
|
53
Test/baseResults/glsl.450.subgroup.tesc.out
Normal file
53
Test/baseResults/glsl.450.subgroup.tesc.out
Normal file
@ -0,0 +1,53 @@
|
||||
glsl.450.subgroup.tesc
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
vertices = 1
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
|
||||
|
||||
Linked tessellation control stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
vertices = 1
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
|
57
Test/baseResults/glsl.450.subgroup.tese.out
Normal file
57
Test/baseResults/glsl.450.subgroup.tese.out
Normal file
@ -0,0 +1,57 @@
|
||||
glsl.450.subgroup.tese
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
input primitive = isolines
|
||||
vertex spacing = none
|
||||
triangle order = none
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
|
||||
|
||||
Linked tessellation evaluation stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
input primitive = isolines
|
||||
vertex spacing = equal_spacing
|
||||
triangle order = ccw
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
|
55
Test/baseResults/glsl.450.subgroup.vert.out
Normal file
55
Test/baseResults/glsl.450.subgroup.vert.out
Normal file
@ -0,0 +1,55 @@
|
||||
glsl.450.subgroup.vert
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:8 Function Definition: main( ( global void)
|
||||
0:8 Function Parameters:
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp 4-component vector of uint)
|
||||
0:10 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:10 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:10 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:10 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:8 Function Definition: main( ( global void)
|
||||
0:8 Function Parameters:
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp 4-component vector of uint)
|
||||
0:10 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
|
||||
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
|
||||
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:10 Construct uvec4 ( temp 4-component vector of uint)
|
||||
0:10 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:10 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
|
||||
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
|
||||
|
14549
Test/baseResults/glsl.450.subgroupArithmetic.comp.out
Normal file
14549
Test/baseResults/glsl.450.subgroupArithmetic.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
2303
Test/baseResults/glsl.450.subgroupBallot.comp.out
Normal file
2303
Test/baseResults/glsl.450.subgroupBallot.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
267
Test/baseResults/glsl.450.subgroupBallotNeg.comp.out
Normal file
267
Test/baseResults/glsl.450.subgroupBallotNeg.comp.out
Normal file
@ -0,0 +1,267 @@
|
||||
glsl.450.subgroupBallotNeg.comp
|
||||
ERROR: 0:32: 'id' : argument must be compile-time constant
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_ballot
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp uint)
|
||||
0:17 'invocation' ( temp uint)
|
||||
0:17 mod ( temp uint)
|
||||
0:17 add ( temp uint)
|
||||
0:17 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:17 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:17 Constant:
|
||||
0:17 4 (const uint)
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp 4-component vector of uint)
|
||||
0:19 'relMask' ( temp 4-component vector of uint)
|
||||
0:22 add ( temp 4-component vector of uint)
|
||||
0:21 add ( temp 4-component vector of uint)
|
||||
0:20 add ( temp 4-component vector of uint)
|
||||
0:19 add ( temp 4-component vector of uint)
|
||||
0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child ( temp 4-component vector of uint)
|
||||
0:25 'result' ( temp 4-component vector of uint)
|
||||
0:25 subgroupBallot ( global 4-component vector of uint)
|
||||
0:25 Constant:
|
||||
0:25 true (const bool)
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:27 direct index ( temp uint)
|
||||
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'invocation' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 subgroupBallotBitCount ( global uint)
|
||||
0:27 'result' ( temp 4-component vector of uint)
|
||||
0:28 move second child to first child ( temp uint)
|
||||
0:28 direct index ( temp uint)
|
||||
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:28 'invocation' ( temp uint)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Convert int to uint ( temp uint)
|
||||
0:28 Test condition and select ( temp int)
|
||||
0:28 Condition
|
||||
0:28 subgroupBallotBitExtract ( global bool)
|
||||
0:28 'result' ( temp 4-component vector of uint)
|
||||
0:28 Constant:
|
||||
0:28 0 (const uint)
|
||||
0:28 true case
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 false case
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:29 move second child to first child ( temp uint)
|
||||
0:29 direct index ( temp uint)
|
||||
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'invocation' ( temp uint)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 add ( temp uint)
|
||||
0:29 subgroupBallotInclusiveBitCount ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:29 subgroupBallotExclusiveBitCount ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:30 move second child to first child ( temp uint)
|
||||
0:30 direct index ( temp uint)
|
||||
0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:30 'invocation' ( temp uint)
|
||||
0:30 Constant:
|
||||
0:30 2 (const int)
|
||||
0:30 Constant:
|
||||
0:30 3 (const int)
|
||||
0:30 add ( temp uint)
|
||||
0:30 subgroupBallotFindLSB ( global uint)
|
||||
0:30 'result' ( temp 4-component vector of uint)
|
||||
0:30 subgroupBallotFindMSB ( global uint)
|
||||
0:30 'result' ( temp 4-component vector of uint)
|
||||
0:32 move second child to first child ( temp float)
|
||||
0:32 direct index ( temp float)
|
||||
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 'invocation' ( temp uint)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 subgroupBroadcast ( global float)
|
||||
0:32 direct index ( temp float)
|
||||
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 'invocation' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_ballot
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp uint)
|
||||
0:17 'invocation' ( temp uint)
|
||||
0:17 mod ( temp uint)
|
||||
0:17 add ( temp uint)
|
||||
0:17 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:17 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:17 Constant:
|
||||
0:17 4 (const uint)
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp 4-component vector of uint)
|
||||
0:19 'relMask' ( temp 4-component vector of uint)
|
||||
0:22 add ( temp 4-component vector of uint)
|
||||
0:21 add ( temp 4-component vector of uint)
|
||||
0:20 add ( temp 4-component vector of uint)
|
||||
0:19 add ( temp 4-component vector of uint)
|
||||
0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child ( temp 4-component vector of uint)
|
||||
0:25 'result' ( temp 4-component vector of uint)
|
||||
0:25 subgroupBallot ( global 4-component vector of uint)
|
||||
0:25 Constant:
|
||||
0:25 true (const bool)
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:27 direct index ( temp uint)
|
||||
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'invocation' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 subgroupBallotBitCount ( global uint)
|
||||
0:27 'result' ( temp 4-component vector of uint)
|
||||
0:28 move second child to first child ( temp uint)
|
||||
0:28 direct index ( temp uint)
|
||||
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:28 'invocation' ( temp uint)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Convert int to uint ( temp uint)
|
||||
0:28 Test condition and select ( temp int)
|
||||
0:28 Condition
|
||||
0:28 subgroupBallotBitExtract ( global bool)
|
||||
0:28 'result' ( temp 4-component vector of uint)
|
||||
0:28 Constant:
|
||||
0:28 0 (const uint)
|
||||
0:28 true case
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 false case
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:29 move second child to first child ( temp uint)
|
||||
0:29 direct index ( temp uint)
|
||||
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'invocation' ( temp uint)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 add ( temp uint)
|
||||
0:29 subgroupBallotInclusiveBitCount ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:29 subgroupBallotExclusiveBitCount ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:30 move second child to first child ( temp uint)
|
||||
0:30 direct index ( temp uint)
|
||||
0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:30 'invocation' ( temp uint)
|
||||
0:30 Constant:
|
||||
0:30 2 (const int)
|
||||
0:30 Constant:
|
||||
0:30 3 (const int)
|
||||
0:30 add ( temp uint)
|
||||
0:30 subgroupBallotFindLSB ( global uint)
|
||||
0:30 'result' ( temp 4-component vector of uint)
|
||||
0:30 subgroupBallotFindMSB ( global uint)
|
||||
0:30 'result' ( temp 4-component vector of uint)
|
||||
0:32 move second child to first child ( temp float)
|
||||
0:32 direct index ( temp float)
|
||||
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 'invocation' ( temp uint)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 subgroupBroadcast ( global float)
|
||||
0:32 direct index ( temp float)
|
||||
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 'invocation' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
|
129
Test/baseResults/glsl.450.subgroupBasic.comp.out
Normal file
129
Test/baseResults/glsl.450.subgroupBasic.comp.out
Normal file
@ -0,0 +1,129 @@
|
||||
glsl.450.subgroupBasic.comp
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:12 Function Definition: main( ( global void)
|
||||
0:12 Function Parameters:
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp int)
|
||||
0:14 indirect index (layout( column_major shared) temp int)
|
||||
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:15 move second child to first child ( temp int)
|
||||
0:15 indirect index (layout( column_major shared) temp int)
|
||||
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:15 Constant:
|
||||
0:15 0 (const int)
|
||||
0:15 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:15 Constant:
|
||||
0:15 1 (const int)
|
||||
0:16 move second child to first child ( temp int)
|
||||
0:16 indirect index (layout( column_major shared) temp int)
|
||||
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:16 Constant:
|
||||
0:16 0 (const int)
|
||||
0:16 'gl_NumSubgroups' ( in uint unknown built-in variable)
|
||||
0:16 Constant:
|
||||
0:16 1 (const int)
|
||||
0:17 move second child to first child ( temp int)
|
||||
0:17 indirect index (layout( column_major shared) temp int)
|
||||
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:17 'gl_SubgroupID' ( in uint unknown built-in variable)
|
||||
0:17 Test condition and select ( temp int)
|
||||
0:17 Condition
|
||||
0:17 subgroupElect ( global bool)
|
||||
0:17 true case
|
||||
0:17 Constant:
|
||||
0:17 1 (const int)
|
||||
0:17 false case
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:18 subgroupBarrier ( global void)
|
||||
0:19 subgroupMemoryBarrier ( global void)
|
||||
0:20 subgroupMemoryBarrierBuffer ( global void)
|
||||
0:21 subgroupMemoryBarrierShared ( global void)
|
||||
0:22 subgroupMemoryBarrierImage ( global void)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:12 Function Definition: main( ( global void)
|
||||
0:12 Function Parameters:
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp int)
|
||||
0:14 indirect index (layout( column_major shared) temp int)
|
||||
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:15 move second child to first child ( temp int)
|
||||
0:15 indirect index (layout( column_major shared) temp int)
|
||||
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:15 Constant:
|
||||
0:15 0 (const int)
|
||||
0:15 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:15 Constant:
|
||||
0:15 1 (const int)
|
||||
0:16 move second child to first child ( temp int)
|
||||
0:16 indirect index (layout( column_major shared) temp int)
|
||||
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:16 Constant:
|
||||
0:16 0 (const int)
|
||||
0:16 'gl_NumSubgroups' ( in uint unknown built-in variable)
|
||||
0:16 Constant:
|
||||
0:16 1 (const int)
|
||||
0:17 move second child to first child ( temp int)
|
||||
0:17 indirect index (layout( column_major shared) temp int)
|
||||
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
|
||||
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:17 'gl_SubgroupID' ( in uint unknown built-in variable)
|
||||
0:17 Test condition and select ( temp int)
|
||||
0:17 Condition
|
||||
0:17 subgroupElect ( global bool)
|
||||
0:17 true case
|
||||
0:17 Constant:
|
||||
0:17 1 (const int)
|
||||
0:17 false case
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:18 subgroupBarrier ( global void)
|
||||
0:19 subgroupMemoryBarrier ( global void)
|
||||
0:20 subgroupMemoryBarrierBuffer ( global void)
|
||||
0:21 subgroupMemoryBarrierShared ( global void)
|
||||
0:22 subgroupMemoryBarrierImage ( global void)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
|
||||
|
5285
Test/baseResults/glsl.450.subgroupClustered.comp.out
Normal file
5285
Test/baseResults/glsl.450.subgroupClustered.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
668
Test/baseResults/glsl.450.subgroupClusteredNeg.comp.out
Normal file
668
Test/baseResults/glsl.450.subgroupClusteredNeg.comp.out
Normal file
@ -0,0 +1,668 @@
|
||||
glsl.450.subgroupClusteredNeg.comp
|
||||
ERROR: 0:22: 'cluster size' : argument must be at least 1
|
||||
ERROR: 0:24: 'cluster size' : argument must be a power of 2
|
||||
ERROR: 0:27: 'cluster size' : argument must be a power of 2
|
||||
ERROR: 0:29: 'cluster size' : argument must be at least 1
|
||||
ERROR: 0:31: 'cluster size' : argument must be at least 1
|
||||
ERROR: 0:33: 'cluster size' : argument must be compile-time constant
|
||||
ERROR: 0:36: 'cluster size' : argument must be compile-time constant
|
||||
ERROR: 0:37: 'cluster size' : argument must be compile-time constant
|
||||
ERROR: 8 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_clustered
|
||||
local_size = (8, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp int)
|
||||
0:17 'a' ( temp int)
|
||||
0:17 Constant:
|
||||
0:17 1 (const int)
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:20 'invocation' ( temp uint)
|
||||
0:20 mod ( temp uint)
|
||||
0:20 add ( temp uint)
|
||||
0:20 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:20 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:20 Constant:
|
||||
0:20 4 (const uint)
|
||||
0:22 move second child to first child ( temp 2-component vector of float)
|
||||
0:22 vector swizzle ( temp 2-component vector of float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 'invocation' ( temp uint)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 subgroupClusteredAdd ( global 2-component vector of float)
|
||||
0:22 vector swizzle ( temp 2-component vector of float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const uint)
|
||||
0:24 move second child to first child ( temp float)
|
||||
0:24 direct index ( temp float)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 'invocation' ( temp uint)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 subgroupClusteredMul ( global float)
|
||||
0:24 direct index ( temp float)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 3 (const uint)
|
||||
0:26 move second child to first child ( temp 2-component vector of int)
|
||||
0:26 vector swizzle ( temp 2-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 'invocation' ( temp uint)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 subgroupClusteredMin ( global 2-component vector of int)
|
||||
0:26 vector swizzle ( temp 2-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 8 (const uint)
|
||||
0:27 move second child to first child ( temp 3-component vector of int)
|
||||
0:27 vector swizzle ( temp 3-component vector of int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'invocation' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Sequence
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 subgroupClusteredMin ( global 3-component vector of int)
|
||||
0:27 vector swizzle ( temp 3-component vector of int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Sequence
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 6 (const uint)
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 direct index ( temp float)
|
||||
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'invocation' ( temp uint)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 subgroupClusteredMax ( global float)
|
||||
0:29 direct index ( temp float)
|
||||
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 4294967295 (const uint)
|
||||
0:31 move second child to first child ( temp 4-component vector of int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 'invocation' ( temp uint)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 subgroupClusteredAnd ( global 4-component vector of int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 Constant:
|
||||
0:31 3 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 4294967293 (const uint)
|
||||
0:33 move second child to first child ( temp int)
|
||||
0:33 direct index ( temp int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 'invocation' ( temp uint)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 subgroupClusteredOr ( global int)
|
||||
0:33 direct index ( temp int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Convert int to uint ( temp uint)
|
||||
0:33 'a' ( temp int)
|
||||
0:34 move second child to first child ( temp 2-component vector of int)
|
||||
0:34 vector swizzle ( temp 2-component vector of int)
|
||||
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 'invocation' ( temp uint)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 subgroupClusteredOr ( global 2-component vector of int)
|
||||
0:34 vector swizzle ( temp 2-component vector of int)
|
||||
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const uint)
|
||||
0:36 move second child to first child ( temp int)
|
||||
0:36 direct index ( temp int)
|
||||
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 'invocation' ( temp uint)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 subgroupClusteredXor ( global int)
|
||||
0:36 direct index ( temp int)
|
||||
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 Convert int to uint ( temp uint)
|
||||
0:36 add ( temp int)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 'a' ( temp int)
|
||||
0:37 move second child to first child ( temp 2-component vector of int)
|
||||
0:37 vector swizzle ( temp 2-component vector of int)
|
||||
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 'invocation' ( temp uint)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Sequence
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 subgroupClusteredXor ( global 2-component vector of int)
|
||||
0:37 vector swizzle ( temp 2-component vector of int)
|
||||
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Sequence
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Convert int to uint ( temp uint)
|
||||
0:37 add ( temp int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 'a' ( temp int)
|
||||
0:38 move second child to first child ( temp 3-component vector of int)
|
||||
0:38 vector swizzle ( temp 3-component vector of int)
|
||||
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 'invocation' ( temp uint)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Sequence
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 2 (const int)
|
||||
0:38 subgroupClusteredXor ( global 3-component vector of int)
|
||||
0:38 vector swizzle ( temp 3-component vector of int)
|
||||
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 Constant:
|
||||
0:38 2 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Sequence
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 2 (const int)
|
||||
0:38 Constant:
|
||||
0:38 2 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_clustered
|
||||
local_size = (8, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp int)
|
||||
0:17 'a' ( temp int)
|
||||
0:17 Constant:
|
||||
0:17 1 (const int)
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp uint)
|
||||
0:20 'invocation' ( temp uint)
|
||||
0:20 mod ( temp uint)
|
||||
0:20 add ( temp uint)
|
||||
0:20 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:20 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:20 Constant:
|
||||
0:20 4 (const uint)
|
||||
0:22 move second child to first child ( temp 2-component vector of float)
|
||||
0:22 vector swizzle ( temp 2-component vector of float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 'invocation' ( temp uint)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 subgroupClusteredAdd ( global 2-component vector of float)
|
||||
0:22 vector swizzle ( temp 2-component vector of float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const uint)
|
||||
0:24 move second child to first child ( temp float)
|
||||
0:24 direct index ( temp float)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 'invocation' ( temp uint)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 subgroupClusteredMul ( global float)
|
||||
0:24 direct index ( temp float)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 3 (const uint)
|
||||
0:26 move second child to first child ( temp 2-component vector of int)
|
||||
0:26 vector swizzle ( temp 2-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 'invocation' ( temp uint)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 subgroupClusteredMin ( global 2-component vector of int)
|
||||
0:26 vector swizzle ( temp 2-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 8 (const uint)
|
||||
0:27 move second child to first child ( temp 3-component vector of int)
|
||||
0:27 vector swizzle ( temp 3-component vector of int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'invocation' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Sequence
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 subgroupClusteredMin ( global 3-component vector of int)
|
||||
0:27 vector swizzle ( temp 3-component vector of int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Sequence
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 6 (const uint)
|
||||
0:29 move second child to first child ( temp float)
|
||||
0:29 direct index ( temp float)
|
||||
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'invocation' ( temp uint)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 subgroupClusteredMax ( global float)
|
||||
0:29 direct index ( temp float)
|
||||
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 4294967295 (const uint)
|
||||
0:31 move second child to first child ( temp 4-component vector of int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 'invocation' ( temp uint)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 subgroupClusteredAnd ( global 4-component vector of int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:31 Constant:
|
||||
0:31 3 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 4294967293 (const uint)
|
||||
0:33 move second child to first child ( temp int)
|
||||
0:33 direct index ( temp int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 'invocation' ( temp uint)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 subgroupClusteredOr ( global int)
|
||||
0:33 direct index ( temp int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Convert int to uint ( temp uint)
|
||||
0:33 'a' ( temp int)
|
||||
0:34 move second child to first child ( temp 2-component vector of int)
|
||||
0:34 vector swizzle ( temp 2-component vector of int)
|
||||
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 'invocation' ( temp uint)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 subgroupClusteredOr ( global 2-component vector of int)
|
||||
0:34 vector swizzle ( temp 2-component vector of int)
|
||||
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const uint)
|
||||
0:36 move second child to first child ( temp int)
|
||||
0:36 direct index ( temp int)
|
||||
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 'invocation' ( temp uint)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 subgroupClusteredXor ( global int)
|
||||
0:36 direct index ( temp int)
|
||||
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 Convert int to uint ( temp uint)
|
||||
0:36 add ( temp int)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 'a' ( temp int)
|
||||
0:37 move second child to first child ( temp 2-component vector of int)
|
||||
0:37 vector swizzle ( temp 2-component vector of int)
|
||||
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 'invocation' ( temp uint)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Sequence
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 subgroupClusteredXor ( global 2-component vector of int)
|
||||
0:37 vector swizzle ( temp 2-component vector of int)
|
||||
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Sequence
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 Convert int to uint ( temp uint)
|
||||
0:37 add ( temp int)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:37 'a' ( temp int)
|
||||
0:38 move second child to first child ( temp 3-component vector of int)
|
||||
0:38 vector swizzle ( temp 3-component vector of int)
|
||||
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 'invocation' ( temp uint)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Sequence
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 2 (const int)
|
||||
0:38 subgroupClusteredXor ( global 3-component vector of int)
|
||||
0:38 vector swizzle ( temp 3-component vector of int)
|
||||
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
0:38 Constant:
|
||||
0:38 2 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Sequence
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 2 (const int)
|
||||
0:38 Constant:
|
||||
0:38 2 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
|
||||
|
16537
Test/baseResults/glsl.450.subgroupPartitioned.comp.out
Normal file
16537
Test/baseResults/glsl.450.subgroupPartitioned.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
4069
Test/baseResults/glsl.450.subgroupQuad.comp.out
Normal file
4069
Test/baseResults/glsl.450.subgroupQuad.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
2101
Test/baseResults/glsl.450.subgroupShuffle.comp.out
Normal file
2101
Test/baseResults/glsl.450.subgroupShuffle.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
2101
Test/baseResults/glsl.450.subgroupShuffleRelative.comp.out
Normal file
2101
Test/baseResults/glsl.450.subgroupShuffleRelative.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
971
Test/baseResults/glsl.450.subgroupVote.comp.out
Normal file
971
Test/baseResults/glsl.450.subgroupVote.comp.out
Normal file
@ -0,0 +1,971 @@
|
||||
glsl.450.subgroupVote.comp
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_vote
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:16 Function Definition: main( ( global void)
|
||||
0:16 Function Parameters:
|
||||
0:18 Sequence
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp uint)
|
||||
0:18 'invocation' ( temp uint)
|
||||
0:18 mod ( temp uint)
|
||||
0:18 add ( temp uint)
|
||||
0:18 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:18 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:18 Constant:
|
||||
0:18 4 (const uint)
|
||||
0:20 Test condition and select ( temp void)
|
||||
0:20 Condition
|
||||
0:20 subgroupAll ( global bool)
|
||||
0:20 Compare Less Than ( temp bool)
|
||||
0:20 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:20 'invocation' ( temp uint)
|
||||
0:20 Constant:
|
||||
0:20 4 (const int)
|
||||
0:20 Constant:
|
||||
0:20 0 (const int)
|
||||
0:20 true case
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp int)
|
||||
0:22 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 'invocation' ( temp uint)
|
||||
0:22 Constant:
|
||||
0:22 4 (const int)
|
||||
0:22 Convert bool to int ( temp int)
|
||||
0:22 subgroupAllEqual ( global bool)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:23 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 'invocation' ( temp uint)
|
||||
0:23 Constant:
|
||||
0:23 4 (const int)
|
||||
0:23 Convert bool to int ( temp int)
|
||||
0:23 subgroupAllEqual ( global bool)
|
||||
0:23 vector swizzle ( temp 2-component vector of float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:24 move second child to first child ( temp int)
|
||||
0:24 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 'invocation' ( temp uint)
|
||||
0:24 Constant:
|
||||
0:24 4 (const int)
|
||||
0:24 Convert bool to int ( temp int)
|
||||
0:24 subgroupAllEqual ( global bool)
|
||||
0:24 vector swizzle ( temp 3-component vector of float)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 Constant:
|
||||
0:24 2 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Sequence
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:24 Constant:
|
||||
0:24 2 (const int)
|
||||
0:25 move second child to first child ( temp int)
|
||||
0:25 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 'invocation' ( temp uint)
|
||||
0:25 Constant:
|
||||
0:25 4 (const int)
|
||||
0:25 Convert bool to int ( temp int)
|
||||
0:25 subgroupAllEqual ( global bool)
|
||||
0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 Constant:
|
||||
0:25 3 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:27 move second child to first child ( temp int)
|
||||
0:27 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 'invocation' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 4 (const int)
|
||||
0:27 Convert bool to int ( temp int)
|
||||
0:27 subgroupAllEqual ( global bool)
|
||||
0:27 direct index ( temp int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:28 move second child to first child ( temp int)
|
||||
0:28 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 'invocation' ( temp uint)
|
||||
0:28 Constant:
|
||||
0:28 4 (const int)
|
||||
0:28 Convert bool to int ( temp int)
|
||||
0:28 subgroupAllEqual ( global bool)
|
||||
0:28 vector swizzle ( temp 2-component vector of int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Sequence
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:29 move second child to first child ( temp int)
|
||||
0:29 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 'invocation' ( temp uint)
|
||||
0:29 Constant:
|
||||
0:29 4 (const int)
|
||||
0:29 Convert bool to int ( temp int)
|
||||
0:29 subgroupAllEqual ( global bool)
|
||||
0:29 vector swizzle ( temp 3-component vector of int)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:30 move second child to first child ( temp int)
|
||||
0:30 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 'invocation' ( temp uint)
|
||||
0:30 Constant:
|
||||
0:30 4 (const int)
|
||||
0:30 Convert bool to int ( temp int)
|
||||
0:30 subgroupAllEqual ( global bool)
|
||||
0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 Constant:
|
||||
0:30 3 (const int)
|
||||
0:30 Constant:
|
||||
0:30 1 (const int)
|
||||
0:32 move second child to first child ( temp int)
|
||||
0:32 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 'invocation' ( temp uint)
|
||||
0:32 Constant:
|
||||
0:32 4 (const int)
|
||||
0:32 Convert bool to int ( temp int)
|
||||
0:32 subgroupAllEqual ( global bool)
|
||||
0:32 direct index ( temp uint)
|
||||
0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 2 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:33 move second child to first child ( temp int)
|
||||
0:33 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 'invocation' ( temp uint)
|
||||
0:33 Constant:
|
||||
0:33 4 (const int)
|
||||
0:33 Convert bool to int ( temp int)
|
||||
0:33 subgroupAllEqual ( global bool)
|
||||
0:33 vector swizzle ( temp 2-component vector of uint)
|
||||
0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:34 move second child to first child ( temp int)
|
||||
0:34 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 'invocation' ( temp uint)
|
||||
0:34 Constant:
|
||||
0:34 4 (const int)
|
||||
0:34 Convert bool to int ( temp int)
|
||||
0:34 subgroupAllEqual ( global bool)
|
||||
0:34 vector swizzle ( temp 3-component vector of uint)
|
||||
0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:34 Sequence
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:35 move second child to first child ( temp int)
|
||||
0:35 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 'invocation' ( temp uint)
|
||||
0:35 Constant:
|
||||
0:35 4 (const int)
|
||||
0:35 Convert bool to int ( temp int)
|
||||
0:35 subgroupAllEqual ( global bool)
|
||||
0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 Constant:
|
||||
0:35 3 (const int)
|
||||
0:35 Constant:
|
||||
0:35 2 (const int)
|
||||
0:20 false case
|
||||
0:37 Test condition and select ( temp void)
|
||||
0:37 Condition
|
||||
0:37 subgroupAny ( global bool)
|
||||
0:37 Compare Less Than ( temp bool)
|
||||
0:37 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:37 'invocation' ( temp uint)
|
||||
0:37 Constant:
|
||||
0:37 4 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 true case
|
||||
0:39 Sequence
|
||||
0:39 move second child to first child ( temp int)
|
||||
0:39 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 'invocation' ( temp uint)
|
||||
0:39 Constant:
|
||||
0:39 4 (const int)
|
||||
0:39 Convert bool to int ( temp int)
|
||||
0:39 subgroupAllEqual ( global bool)
|
||||
0:39 direct index ( temp double)
|
||||
0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 3 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:40 move second child to first child ( temp int)
|
||||
0:40 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 'invocation' ( temp uint)
|
||||
0:40 Constant:
|
||||
0:40 4 (const int)
|
||||
0:40 Convert bool to int ( temp int)
|
||||
0:40 subgroupAllEqual ( global bool)
|
||||
0:40 vector swizzle ( temp 2-component vector of double)
|
||||
0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 3 (const int)
|
||||
0:40 Sequence
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:41 move second child to first child ( temp int)
|
||||
0:41 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 'invocation' ( temp uint)
|
||||
0:41 Constant:
|
||||
0:41 4 (const int)
|
||||
0:41 Convert bool to int ( temp int)
|
||||
0:41 subgroupAllEqual ( global bool)
|
||||
0:41 vector swizzle ( temp 3-component vector of double)
|
||||
0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 Constant:
|
||||
0:41 2 (const int)
|
||||
0:41 Constant:
|
||||
0:41 3 (const int)
|
||||
0:41 Sequence
|
||||
0:41 Constant:
|
||||
0:41 0 (const int)
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 2 (const int)
|
||||
0:42 move second child to first child ( temp int)
|
||||
0:42 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 'invocation' ( temp uint)
|
||||
0:42 Constant:
|
||||
0:42 4 (const int)
|
||||
0:42 Convert bool to int ( temp int)
|
||||
0:42 subgroupAllEqual ( global bool)
|
||||
0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 Constant:
|
||||
0:42 3 (const int)
|
||||
0:42 Constant:
|
||||
0:42 3 (const int)
|
||||
0:44 move second child to first child ( temp int)
|
||||
0:44 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 'invocation' ( temp uint)
|
||||
0:44 Constant:
|
||||
0:44 4 (const int)
|
||||
0:44 Construct int ( temp int)
|
||||
0:44 Convert bool to int ( temp int)
|
||||
0:44 subgroupAllEqual ( global bool)
|
||||
0:44 Compare Less Than ( temp bool)
|
||||
0:44 direct index ( temp int)
|
||||
0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 Constant:
|
||||
0:44 0 (const int)
|
||||
0:44 Constant:
|
||||
0:44 1 (const int)
|
||||
0:44 Constant:
|
||||
0:44 0 (const int)
|
||||
0:44 Constant:
|
||||
0:44 0 (const int)
|
||||
0:45 move second child to first child ( temp int)
|
||||
0:45 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 'invocation' ( temp uint)
|
||||
0:45 Constant:
|
||||
0:45 4 (const int)
|
||||
0:45 Construct int ( temp int)
|
||||
0:45 Construct ivec2 ( temp 2-component vector of int)
|
||||
0:45 Convert bool to int ( temp int)
|
||||
0:45 subgroupAllEqual ( global bool)
|
||||
0:45 Compare Less Than ( global 2-component vector of bool)
|
||||
0:45 vector swizzle ( temp 2-component vector of int)
|
||||
0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 Constant:
|
||||
0:45 1 (const int)
|
||||
0:45 Constant:
|
||||
0:45 1 (const int)
|
||||
0:45 Sequence
|
||||
0:45 Constant:
|
||||
0:45 0 (const int)
|
||||
0:45 Constant:
|
||||
0:45 1 (const int)
|
||||
0:45 Constant:
|
||||
0:45 0 (const int)
|
||||
0:45 0 (const int)
|
||||
0:46 move second child to first child ( temp int)
|
||||
0:46 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 'invocation' ( temp uint)
|
||||
0:46 Constant:
|
||||
0:46 4 (const int)
|
||||
0:46 Construct int ( temp int)
|
||||
0:46 Construct ivec3 ( temp 3-component vector of int)
|
||||
0:46 Convert bool to int ( temp int)
|
||||
0:46 subgroupAllEqual ( global bool)
|
||||
0:46 Compare Less Than ( global 3-component vector of bool)
|
||||
0:46 vector swizzle ( temp 3-component vector of int)
|
||||
0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 Constant:
|
||||
0:46 1 (const int)
|
||||
0:46 Constant:
|
||||
0:46 1 (const int)
|
||||
0:46 Sequence
|
||||
0:46 Constant:
|
||||
0:46 0 (const int)
|
||||
0:46 Constant:
|
||||
0:46 1 (const int)
|
||||
0:46 Constant:
|
||||
0:46 2 (const int)
|
||||
0:46 Constant:
|
||||
0:46 0 (const int)
|
||||
0:46 0 (const int)
|
||||
0:46 0 (const int)
|
||||
0:47 move second child to first child ( temp int)
|
||||
0:47 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 'invocation' ( temp uint)
|
||||
0:47 Constant:
|
||||
0:47 4 (const int)
|
||||
0:47 Construct int ( temp int)
|
||||
0:47 Construct ivec4 ( temp 4-component vector of int)
|
||||
0:47 Convert bool to int ( temp int)
|
||||
0:47 subgroupAllEqual ( global bool)
|
||||
0:47 Compare Less Than ( global 4-component vector of bool)
|
||||
0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 Constant:
|
||||
0:47 1 (const int)
|
||||
0:47 Constant:
|
||||
0:47 1 (const int)
|
||||
0:47 Constant:
|
||||
0:47 0 (const int)
|
||||
0:47 0 (const int)
|
||||
0:47 0 (const int)
|
||||
0:47 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_vote
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:16 Function Definition: main( ( global void)
|
||||
0:16 Function Parameters:
|
||||
0:18 Sequence
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp uint)
|
||||
0:18 'invocation' ( temp uint)
|
||||
0:18 mod ( temp uint)
|
||||
0:18 add ( temp uint)
|
||||
0:18 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:18 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:18 Constant:
|
||||
0:18 4 (const uint)
|
||||
0:20 Test condition and select ( temp void)
|
||||
0:20 Condition
|
||||
0:20 subgroupAll ( global bool)
|
||||
0:20 Compare Less Than ( temp bool)
|
||||
0:20 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:20 'invocation' ( temp uint)
|
||||
0:20 Constant:
|
||||
0:20 4 (const int)
|
||||
0:20 Constant:
|
||||
0:20 0 (const int)
|
||||
0:20 true case
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp int)
|
||||
0:22 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 'invocation' ( temp uint)
|
||||
0:22 Constant:
|
||||
0:22 4 (const int)
|
||||
0:22 Convert bool to int ( temp int)
|
||||
0:22 subgroupAllEqual ( global bool)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:23 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 'invocation' ( temp uint)
|
||||
0:23 Constant:
|
||||
0:23 4 (const int)
|
||||
0:23 Convert bool to int ( temp int)
|
||||
0:23 subgroupAllEqual ( global bool)
|
||||
0:23 vector swizzle ( temp 2-component vector of float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:24 move second child to first child ( temp int)
|
||||
0:24 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 'invocation' ( temp uint)
|
||||
0:24 Constant:
|
||||
0:24 4 (const int)
|
||||
0:24 Convert bool to int ( temp int)
|
||||
0:24 subgroupAllEqual ( global bool)
|
||||
0:24 vector swizzle ( temp 3-component vector of float)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:24 Constant:
|
||||
0:24 2 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Sequence
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:24 Constant:
|
||||
0:24 2 (const int)
|
||||
0:25 move second child to first child ( temp int)
|
||||
0:25 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 'invocation' ( temp uint)
|
||||
0:25 Constant:
|
||||
0:25 4 (const int)
|
||||
0:25 Convert bool to int ( temp int)
|
||||
0:25 subgroupAllEqual ( global bool)
|
||||
0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:25 Constant:
|
||||
0:25 3 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:27 move second child to first child ( temp int)
|
||||
0:27 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 'invocation' ( temp uint)
|
||||
0:27 Constant:
|
||||
0:27 4 (const int)
|
||||
0:27 Convert bool to int ( temp int)
|
||||
0:27 subgroupAllEqual ( global bool)
|
||||
0:27 direct index ( temp int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:28 move second child to first child ( temp int)
|
||||
0:28 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 'invocation' ( temp uint)
|
||||
0:28 Constant:
|
||||
0:28 4 (const int)
|
||||
0:28 Convert bool to int ( temp int)
|
||||
0:28 subgroupAllEqual ( global bool)
|
||||
0:28 vector swizzle ( temp 2-component vector of int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Sequence
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:29 move second child to first child ( temp int)
|
||||
0:29 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 'invocation' ( temp uint)
|
||||
0:29 Constant:
|
||||
0:29 4 (const int)
|
||||
0:29 Convert bool to int ( temp int)
|
||||
0:29 subgroupAllEqual ( global bool)
|
||||
0:29 vector swizzle ( temp 3-component vector of int)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:30 move second child to first child ( temp int)
|
||||
0:30 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 'invocation' ( temp uint)
|
||||
0:30 Constant:
|
||||
0:30 4 (const int)
|
||||
0:30 Convert bool to int ( temp int)
|
||||
0:30 subgroupAllEqual ( global bool)
|
||||
0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:30 Constant:
|
||||
0:30 3 (const int)
|
||||
0:30 Constant:
|
||||
0:30 1 (const int)
|
||||
0:32 move second child to first child ( temp int)
|
||||
0:32 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 'invocation' ( temp uint)
|
||||
0:32 Constant:
|
||||
0:32 4 (const int)
|
||||
0:32 Convert bool to int ( temp int)
|
||||
0:32 subgroupAllEqual ( global bool)
|
||||
0:32 direct index ( temp uint)
|
||||
0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 2 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:33 move second child to first child ( temp int)
|
||||
0:33 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 'invocation' ( temp uint)
|
||||
0:33 Constant:
|
||||
0:33 4 (const int)
|
||||
0:33 Convert bool to int ( temp int)
|
||||
0:33 subgroupAllEqual ( global bool)
|
||||
0:33 vector swizzle ( temp 2-component vector of uint)
|
||||
0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:34 move second child to first child ( temp int)
|
||||
0:34 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 'invocation' ( temp uint)
|
||||
0:34 Constant:
|
||||
0:34 4 (const int)
|
||||
0:34 Convert bool to int ( temp int)
|
||||
0:34 subgroupAllEqual ( global bool)
|
||||
0:34 vector swizzle ( temp 3-component vector of uint)
|
||||
0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:34 Sequence
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:35 move second child to first child ( temp int)
|
||||
0:35 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 'invocation' ( temp uint)
|
||||
0:35 Constant:
|
||||
0:35 4 (const int)
|
||||
0:35 Convert bool to int ( temp int)
|
||||
0:35 subgroupAllEqual ( global bool)
|
||||
0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:35 Constant:
|
||||
0:35 3 (const int)
|
||||
0:35 Constant:
|
||||
0:35 2 (const int)
|
||||
0:20 false case
|
||||
0:37 Test condition and select ( temp void)
|
||||
0:37 Condition
|
||||
0:37 subgroupAny ( global bool)
|
||||
0:37 Compare Less Than ( temp bool)
|
||||
0:37 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:37 'invocation' ( temp uint)
|
||||
0:37 Constant:
|
||||
0:37 4 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 true case
|
||||
0:39 Sequence
|
||||
0:39 move second child to first child ( temp int)
|
||||
0:39 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 'invocation' ( temp uint)
|
||||
0:39 Constant:
|
||||
0:39 4 (const int)
|
||||
0:39 Convert bool to int ( temp int)
|
||||
0:39 subgroupAllEqual ( global bool)
|
||||
0:39 direct index ( temp double)
|
||||
0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 3 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:40 move second child to first child ( temp int)
|
||||
0:40 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 'invocation' ( temp uint)
|
||||
0:40 Constant:
|
||||
0:40 4 (const int)
|
||||
0:40 Convert bool to int ( temp int)
|
||||
0:40 subgroupAllEqual ( global bool)
|
||||
0:40 vector swizzle ( temp 2-component vector of double)
|
||||
0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 3 (const int)
|
||||
0:40 Sequence
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:41 move second child to first child ( temp int)
|
||||
0:41 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 'invocation' ( temp uint)
|
||||
0:41 Constant:
|
||||
0:41 4 (const int)
|
||||
0:41 Convert bool to int ( temp int)
|
||||
0:41 subgroupAllEqual ( global bool)
|
||||
0:41 vector swizzle ( temp 3-component vector of double)
|
||||
0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:41 Constant:
|
||||
0:41 2 (const int)
|
||||
0:41 Constant:
|
||||
0:41 3 (const int)
|
||||
0:41 Sequence
|
||||
0:41 Constant:
|
||||
0:41 0 (const int)
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 2 (const int)
|
||||
0:42 move second child to first child ( temp int)
|
||||
0:42 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 'invocation' ( temp uint)
|
||||
0:42 Constant:
|
||||
0:42 4 (const int)
|
||||
0:42 Convert bool to int ( temp int)
|
||||
0:42 subgroupAllEqual ( global bool)
|
||||
0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
|
||||
0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:42 Constant:
|
||||
0:42 3 (const int)
|
||||
0:42 Constant:
|
||||
0:42 3 (const int)
|
||||
0:44 move second child to first child ( temp int)
|
||||
0:44 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 'invocation' ( temp uint)
|
||||
0:44 Constant:
|
||||
0:44 4 (const int)
|
||||
0:44 Construct int ( temp int)
|
||||
0:44 Convert bool to int ( temp int)
|
||||
0:44 subgroupAllEqual ( global bool)
|
||||
0:44 Compare Less Than ( temp bool)
|
||||
0:44 direct index ( temp int)
|
||||
0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:44 Constant:
|
||||
0:44 0 (const int)
|
||||
0:44 Constant:
|
||||
0:44 1 (const int)
|
||||
0:44 Constant:
|
||||
0:44 0 (const int)
|
||||
0:44 Constant:
|
||||
0:44 0 (const int)
|
||||
0:45 move second child to first child ( temp int)
|
||||
0:45 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 'invocation' ( temp uint)
|
||||
0:45 Constant:
|
||||
0:45 4 (const int)
|
||||
0:45 Construct int ( temp int)
|
||||
0:45 Construct ivec2 ( temp 2-component vector of int)
|
||||
0:45 Convert bool to int ( temp int)
|
||||
0:45 subgroupAllEqual ( global bool)
|
||||
0:45 Compare Less Than ( global 2-component vector of bool)
|
||||
0:45 vector swizzle ( temp 2-component vector of int)
|
||||
0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:45 Constant:
|
||||
0:45 1 (const int)
|
||||
0:45 Constant:
|
||||
0:45 1 (const int)
|
||||
0:45 Sequence
|
||||
0:45 Constant:
|
||||
0:45 0 (const int)
|
||||
0:45 Constant:
|
||||
0:45 1 (const int)
|
||||
0:45 Constant:
|
||||
0:45 0 (const int)
|
||||
0:45 0 (const int)
|
||||
0:46 move second child to first child ( temp int)
|
||||
0:46 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 'invocation' ( temp uint)
|
||||
0:46 Constant:
|
||||
0:46 4 (const int)
|
||||
0:46 Construct int ( temp int)
|
||||
0:46 Construct ivec3 ( temp 3-component vector of int)
|
||||
0:46 Convert bool to int ( temp int)
|
||||
0:46 subgroupAllEqual ( global bool)
|
||||
0:46 Compare Less Than ( global 3-component vector of bool)
|
||||
0:46 vector swizzle ( temp 3-component vector of int)
|
||||
0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:46 Constant:
|
||||
0:46 1 (const int)
|
||||
0:46 Constant:
|
||||
0:46 1 (const int)
|
||||
0:46 Sequence
|
||||
0:46 Constant:
|
||||
0:46 0 (const int)
|
||||
0:46 Constant:
|
||||
0:46 1 (const int)
|
||||
0:46 Constant:
|
||||
0:46 2 (const int)
|
||||
0:46 Constant:
|
||||
0:46 0 (const int)
|
||||
0:46 0 (const int)
|
||||
0:46 0 (const int)
|
||||
0:47 move second child to first child ( temp int)
|
||||
0:47 r: direct index for structure (layout( column_major shared) buffer int)
|
||||
0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 'invocation' ( temp uint)
|
||||
0:47 Constant:
|
||||
0:47 4 (const int)
|
||||
0:47 Construct int ( temp int)
|
||||
0:47 Construct ivec4 ( temp 4-component vector of int)
|
||||
0:47 Convert bool to int ( temp int)
|
||||
0:47 subgroupAllEqual ( global bool)
|
||||
0:47 Compare Less Than ( global 4-component vector of bool)
|
||||
0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
|
||||
0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
0:47 Constant:
|
||||
0:47 1 (const int)
|
||||
0:47 Constant:
|
||||
0:47 1 (const int)
|
||||
0:47 Constant:
|
||||
0:47 0 (const int)
|
||||
0:47 0 (const int)
|
||||
0:47 0 (const int)
|
||||
0:47 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
|
||||
|
41
Test/baseResults/glsl.es320.subgroup.frag.out
Normal file
41
Test/baseResults/glsl.es320.subgroup.frag.out
Normal file
@ -0,0 +1,41 @@
|
||||
glsl.es320.subgroup.frag
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:4 Function Definition: main( ( global void)
|
||||
0:4 Function Parameters:
|
||||
0:6 Sequence
|
||||
0:6 move second child to first child ( temp mediump 4-component vector of uint)
|
||||
0:6 'data' (layout( location=0) out mediump 4-component vector of uint)
|
||||
0:6 Construct uvec4 ( temp mediump 4-component vector of uint)
|
||||
0:6 'gl_SubgroupSize' ( flat in mediump uint unknown built-in variable)
|
||||
0:6 'gl_SubgroupInvocationID' ( flat in mediump uint unknown built-in variable)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'data' (layout( location=0) out mediump 4-component vector of uint)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:4 Function Definition: main( ( global void)
|
||||
0:4 Function Parameters:
|
||||
0:6 Sequence
|
||||
0:6 move second child to first child ( temp mediump 4-component vector of uint)
|
||||
0:6 'data' (layout( location=0) out mediump 4-component vector of uint)
|
||||
0:6 Construct uvec4 ( temp mediump 4-component vector of uint)
|
||||
0:6 'gl_SubgroupSize' ( flat in mediump uint unknown built-in variable)
|
||||
0:6 'gl_SubgroupInvocationID' ( flat in mediump uint unknown built-in variable)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:6 Constant:
|
||||
0:6 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'data' (layout( location=0) out mediump 4-component vector of uint)
|
||||
|
59
Test/baseResults/glsl.es320.subgroup.geom.out
Normal file
59
Test/baseResults/glsl.es320.subgroup.geom.out
Normal file
@ -0,0 +1,59 @@
|
||||
glsl.es320.subgroup.geom
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
invocations = -1
|
||||
max_vertices = 1
|
||||
input primitive = points
|
||||
output primitive = points
|
||||
0:? Sequence
|
||||
0:10 Function Definition: main( ( global void)
|
||||
0:10 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:12 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
|
||||
0:12 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:12 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:12 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
|
||||
|
||||
Linked geometry stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
invocations = 1
|
||||
max_vertices = 1
|
||||
input primitive = points
|
||||
output primitive = points
|
||||
0:? Sequence
|
||||
0:10 Function Definition: main( ( global void)
|
||||
0:10 Function Parameters:
|
||||
0:12 Sequence
|
||||
0:12 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:12 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
|
||||
0:12 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:12 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:12 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:12 Constant:
|
||||
0:12 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
|
53
Test/baseResults/glsl.es320.subgroup.tesc.out
Normal file
53
Test/baseResults/glsl.es320.subgroup.tesc.out
Normal file
@ -0,0 +1,53 @@
|
||||
glsl.es320.subgroup.tesc
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
vertices = 1
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
|
||||
|
||||
Linked tessellation control stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
vertices = 1
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
|
57
Test/baseResults/glsl.es320.subgroup.tese.out
Normal file
57
Test/baseResults/glsl.es320.subgroup.tese.out
Normal file
@ -0,0 +1,57 @@
|
||||
glsl.es320.subgroup.tese
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
input primitive = isolines
|
||||
vertex spacing = none
|
||||
triangle order = none
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
|
||||
|
||||
Linked tessellation evaluation stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
input primitive = isolines
|
||||
vertex spacing = equal_spacing
|
||||
triangle order = ccw
|
||||
0:? Sequence
|
||||
0:9 Function Definition: main( ( global void)
|
||||
0:9 Function Parameters:
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
|
||||
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
|
55
Test/baseResults/glsl.es320.subgroup.vert.out
Normal file
55
Test/baseResults/glsl.es320.subgroup.vert.out
Normal file
@ -0,0 +1,55 @@
|
||||
glsl.es320.subgroup.vert
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:8 Function Definition: main( ( global void)
|
||||
0:8 Function Parameters:
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:10 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 'gl_VertexID' ( gl_VertexId highp int VertexId)
|
||||
0:10 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:10 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:10 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
0:? Sequence
|
||||
0:8 Function Definition: main( ( global void)
|
||||
0:8 Function Parameters:
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp highp 4-component vector of uint)
|
||||
0:10 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
|
||||
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
|
||||
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 'gl_VertexID' ( gl_VertexId highp int VertexId)
|
||||
0:10 Construct uvec4 ( temp highp 4-component vector of uint)
|
||||
0:10 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:10 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:10 Constant:
|
||||
0:10 0 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
|
||||
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
|
||||
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
|
||||
|
12797
Test/baseResults/glsl.es320.subgroupArithmetic.comp.out
Normal file
12797
Test/baseResults/glsl.es320.subgroupArithmetic.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
1981
Test/baseResults/glsl.es320.subgroupBallot.comp.out
Normal file
1981
Test/baseResults/glsl.es320.subgroupBallot.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
275
Test/baseResults/glsl.es320.subgroupBallotNeg.comp.out
Normal file
275
Test/baseResults/glsl.es320.subgroupBallotNeg.comp.out
Normal file
@ -0,0 +1,275 @@
|
||||
glsl.es320.subgroupBallotNeg.comp
|
||||
ERROR: 0:31: 'id' : argument must be compile-time constant
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_ballot
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:14 Function Definition: main( ( global void)
|
||||
0:14 Function Parameters:
|
||||
0:16 Sequence
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp uint)
|
||||
0:16 'invocation' ( temp uint)
|
||||
0:16 mod ( temp uint)
|
||||
0:16 add ( temp uint)
|
||||
0:16 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:16 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:16 Constant:
|
||||
0:16 4 (const uint)
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp 4-component vector of uint)
|
||||
0:18 'relMask' ( temp 4-component vector of uint)
|
||||
0:21 add ( temp 4-component vector of uint)
|
||||
0:20 add ( temp 4-component vector of uint)
|
||||
0:19 add ( temp 4-component vector of uint)
|
||||
0:18 add ( temp 4-component vector of uint)
|
||||
0:18 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:19 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:20 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:21 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:22 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child ( temp 4-component vector of uint)
|
||||
0:24 'result' ( temp 4-component vector of uint)
|
||||
0:24 subgroupBallot ( global 4-component vector of uint)
|
||||
0:24 Constant:
|
||||
0:24 true (const bool)
|
||||
0:26 move second child to first child ( temp uint)
|
||||
0:26 direct index ( temp uint)
|
||||
0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 subgroupBallotBitCount ( global uint)
|
||||
0:26 'result' ( temp 4-component vector of uint)
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:27 direct index ( temp uint)
|
||||
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Test condition and select ( temp uint)
|
||||
0:27 Condition
|
||||
0:27 subgroupBallotBitExtract ( global bool)
|
||||
0:27 'result' ( temp 4-component vector of uint)
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:27 true case
|
||||
0:27 Constant:
|
||||
0:27 1 (const uint)
|
||||
0:27 false case
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:28 move second child to first child ( temp uint)
|
||||
0:28 direct index ( temp uint)
|
||||
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 add ( temp uint)
|
||||
0:28 subgroupBallotInclusiveBitCount ( global uint)
|
||||
0:28 'result' ( temp 4-component vector of uint)
|
||||
0:28 subgroupBallotExclusiveBitCount ( global uint)
|
||||
0:28 'result' ( temp 4-component vector of uint)
|
||||
0:29 move second child to first child ( temp uint)
|
||||
0:29 direct index ( temp uint)
|
||||
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 add ( temp uint)
|
||||
0:29 subgroupBallotFindLSB ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:29 subgroupBallotFindMSB ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:31 move second child to first child ( temp float)
|
||||
0:31 direct index ( temp float)
|
||||
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 subgroupBroadcast ( global float)
|
||||
0:31 direct index ( temp float)
|
||||
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 'invocation' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
Requested GL_KHR_shader_subgroup_ballot
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:14 Function Definition: main( ( global void)
|
||||
0:14 Function Parameters:
|
||||
0:16 Sequence
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp uint)
|
||||
0:16 'invocation' ( temp uint)
|
||||
0:16 mod ( temp uint)
|
||||
0:16 add ( temp uint)
|
||||
0:16 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
|
||||
0:16 'gl_SubgroupSize' ( in uint unknown built-in variable)
|
||||
0:16 Constant:
|
||||
0:16 4 (const uint)
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp 4-component vector of uint)
|
||||
0:18 'relMask' ( temp 4-component vector of uint)
|
||||
0:21 add ( temp 4-component vector of uint)
|
||||
0:20 add ( temp 4-component vector of uint)
|
||||
0:19 add ( temp 4-component vector of uint)
|
||||
0:18 add ( temp 4-component vector of uint)
|
||||
0:18 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:19 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:20 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:21 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:22 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child ( temp 4-component vector of uint)
|
||||
0:24 'result' ( temp 4-component vector of uint)
|
||||
0:24 subgroupBallot ( global 4-component vector of uint)
|
||||
0:24 Constant:
|
||||
0:24 true (const bool)
|
||||
0:26 move second child to first child ( temp uint)
|
||||
0:26 direct index ( temp uint)
|
||||
0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 subgroupBallotBitCount ( global uint)
|
||||
0:26 'result' ( temp 4-component vector of uint)
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:27 direct index ( temp uint)
|
||||
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 2 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Test condition and select ( temp uint)
|
||||
0:27 Condition
|
||||
0:27 subgroupBallotBitExtract ( global bool)
|
||||
0:27 'result' ( temp 4-component vector of uint)
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:27 true case
|
||||
0:27 Constant:
|
||||
0:27 1 (const uint)
|
||||
0:27 false case
|
||||
0:27 Constant:
|
||||
0:27 0 (const uint)
|
||||
0:28 move second child to first child ( temp uint)
|
||||
0:28 direct index ( temp uint)
|
||||
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 add ( temp uint)
|
||||
0:28 subgroupBallotInclusiveBitCount ( global uint)
|
||||
0:28 'result' ( temp 4-component vector of uint)
|
||||
0:28 subgroupBallotExclusiveBitCount ( global uint)
|
||||
0:28 'result' ( temp 4-component vector of uint)
|
||||
0:29 move second child to first child ( temp uint)
|
||||
0:29 direct index ( temp uint)
|
||||
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 2 (const int)
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 add ( temp uint)
|
||||
0:29 subgroupBallotFindLSB ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:29 subgroupBallotFindMSB ( global uint)
|
||||
0:29 'result' ( temp 4-component vector of uint)
|
||||
0:31 move second child to first child ( temp float)
|
||||
0:31 direct index ( temp float)
|
||||
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 subgroupBroadcast ( global float)
|
||||
0:31 direct index ( temp float)
|
||||
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 'invocation' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
|
||||
|
129
Test/baseResults/glsl.es320.subgroupBasic.comp.out
Normal file
129
Test/baseResults/glsl.es320.subgroupBasic.comp.out
Normal file
@ -0,0 +1,129 @@
|
||||
glsl.es320.subgroupBasic.comp
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:12 Function Definition: main( ( global void)
|
||||
0:12 Function Parameters:
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp highp int)
|
||||
0:14 indirect index (layout( column_major shared) temp highp int)
|
||||
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:15 move second child to first child ( temp highp int)
|
||||
0:15 indirect index (layout( column_major shared) temp highp int)
|
||||
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:15 Constant:
|
||||
0:15 0 (const int)
|
||||
0:15 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:15 Constant:
|
||||
0:15 1 (const int)
|
||||
0:16 move second child to first child ( temp highp int)
|
||||
0:16 indirect index (layout( column_major shared) temp highp int)
|
||||
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:16 Constant:
|
||||
0:16 0 (const int)
|
||||
0:16 'gl_NumSubgroups' ( in highp uint unknown built-in variable)
|
||||
0:16 Constant:
|
||||
0:16 1 (const int)
|
||||
0:17 move second child to first child ( temp highp int)
|
||||
0:17 indirect index (layout( column_major shared) temp highp int)
|
||||
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:17 'gl_SubgroupID' ( in highp uint unknown built-in variable)
|
||||
0:17 Test condition and select ( temp highp int)
|
||||
0:17 Condition
|
||||
0:17 subgroupElect ( global bool)
|
||||
0:17 true case
|
||||
0:17 Constant:
|
||||
0:17 1 (const int)
|
||||
0:17 false case
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:18 subgroupBarrier ( global void)
|
||||
0:19 subgroupMemoryBarrier ( global void)
|
||||
0:20 subgroupMemoryBarrierBuffer ( global void)
|
||||
0:21 subgroupMemoryBarrierShared ( global void)
|
||||
0:22 subgroupMemoryBarrierImage ( global void)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:12 Function Definition: main( ( global void)
|
||||
0:12 Function Parameters:
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp highp int)
|
||||
0:14 indirect index (layout( column_major shared) temp highp int)
|
||||
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:15 move second child to first child ( temp highp int)
|
||||
0:15 indirect index (layout( column_major shared) temp highp int)
|
||||
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:15 Constant:
|
||||
0:15 0 (const int)
|
||||
0:15 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:15 Constant:
|
||||
0:15 1 (const int)
|
||||
0:16 move second child to first child ( temp highp int)
|
||||
0:16 indirect index (layout( column_major shared) temp highp int)
|
||||
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:16 Constant:
|
||||
0:16 0 (const int)
|
||||
0:16 'gl_NumSubgroups' ( in highp uint unknown built-in variable)
|
||||
0:16 Constant:
|
||||
0:16 1 (const int)
|
||||
0:17 move second child to first child ( temp highp int)
|
||||
0:17 indirect index (layout( column_major shared) temp highp int)
|
||||
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
|
||||
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:17 'gl_SubgroupID' ( in highp uint unknown built-in variable)
|
||||
0:17 Test condition and select ( temp highp int)
|
||||
0:17 Condition
|
||||
0:17 subgroupElect ( global bool)
|
||||
0:17 true case
|
||||
0:17 Constant:
|
||||
0:17 1 (const int)
|
||||
0:17 false case
|
||||
0:17 Constant:
|
||||
0:17 0 (const int)
|
||||
0:18 subgroupBarrier ( global void)
|
||||
0:19 subgroupMemoryBarrier ( global void)
|
||||
0:20 subgroupMemoryBarrierBuffer ( global void)
|
||||
0:21 subgroupMemoryBarrierShared ( global void)
|
||||
0:22 subgroupMemoryBarrierImage ( global void)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
|
||||
|
4637
Test/baseResults/glsl.es320.subgroupClustered.comp.out
Normal file
4637
Test/baseResults/glsl.es320.subgroupClustered.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
604
Test/baseResults/glsl.es320.subgroupClusteredNeg.comp.out
Normal file
604
Test/baseResults/glsl.es320.subgroupClusteredNeg.comp.out
Normal file
@ -0,0 +1,604 @@
|
||||
glsl.es320.subgroupClusteredNeg.comp
|
||||
ERROR: 0:21: 'cluster size' : argument must be at least 1
|
||||
ERROR: 0:23: 'cluster size' : argument must be a power of 2
|
||||
ERROR: 0:26: 'cluster size' : argument must be a power of 2
|
||||
ERROR: 0:28: 'cluster size' : argument must be compile-time constant
|
||||
ERROR: 0:31: 'cluster size' : argument must be compile-time constant
|
||||
ERROR: 0:32: 'cluster size' : argument must be compile-time constant
|
||||
ERROR: 6 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_clustered
|
||||
local_size = (8, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:14 Function Definition: main( ( global void)
|
||||
0:14 Function Parameters:
|
||||
0:16 Sequence
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp highp int)
|
||||
0:16 'a' ( temp highp int)
|
||||
0:16 Constant:
|
||||
0:16 1 (const int)
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp highp uint)
|
||||
0:19 'invocation' ( temp highp uint)
|
||||
0:19 mod ( temp mediump uint)
|
||||
0:19 add ( temp mediump uint)
|
||||
0:19 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:19 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:19 Constant:
|
||||
0:19 4 (const uint)
|
||||
0:21 move second child to first child ( temp highp 2-component vector of float)
|
||||
0:21 vector swizzle ( temp highp 2-component vector of float)
|
||||
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Sequence
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 subgroupClusteredAdd ( global highp 2-component vector of float)
|
||||
0:21 vector swizzle ( temp highp 2-component vector of float)
|
||||
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Sequence
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const uint)
|
||||
0:23 move second child to first child ( temp highp float)
|
||||
0:23 direct index ( temp highp float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 subgroupClusteredMul ( global highp float)
|
||||
0:23 direct index ( temp highp float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 3 (const uint)
|
||||
0:25 move second child to first child ( temp highp 2-component vector of int)
|
||||
0:25 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Sequence
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 subgroupClusteredMin ( global highp 2-component vector of int)
|
||||
0:25 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Sequence
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 8 (const uint)
|
||||
0:26 move second child to first child ( temp highp 3-component vector of int)
|
||||
0:26 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 subgroupClusteredMin ( global highp 3-component vector of int)
|
||||
0:26 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 6 (const uint)
|
||||
0:28 move second child to first child ( temp highp int)
|
||||
0:28 direct index ( temp highp int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 subgroupClusteredOr ( global highp int)
|
||||
0:28 direct index ( temp highp int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Convert int to uint ( temp highp uint)
|
||||
0:28 'a' ( temp highp int)
|
||||
0:29 move second child to first child ( temp highp 2-component vector of int)
|
||||
0:29 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 subgroupClusteredOr ( global highp 2-component vector of int)
|
||||
0:29 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const uint)
|
||||
0:31 move second child to first child ( temp highp int)
|
||||
0:31 direct index ( temp highp int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 subgroupClusteredXor ( global highp int)
|
||||
0:31 direct index ( temp highp int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Convert int to uint ( temp highp uint)
|
||||
0:31 add ( temp highp int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 'a' ( temp highp int)
|
||||
0:32 move second child to first child ( temp highp 2-component vector of int)
|
||||
0:32 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Sequence
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 subgroupClusteredXor ( global highp 2-component vector of int)
|
||||
0:32 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Sequence
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Convert int to uint ( temp highp uint)
|
||||
0:32 add ( temp highp int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 'a' ( temp highp int)
|
||||
0:33 move second child to first child ( temp highp 3-component vector of int)
|
||||
0:33 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 subgroupClusteredXor ( global highp 3-component vector of int)
|
||||
0:33 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_clustered
|
||||
local_size = (8, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:14 Function Definition: main( ( global void)
|
||||
0:14 Function Parameters:
|
||||
0:16 Sequence
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp highp int)
|
||||
0:16 'a' ( temp highp int)
|
||||
0:16 Constant:
|
||||
0:16 1 (const int)
|
||||
0:19 Sequence
|
||||
0:19 move second child to first child ( temp highp uint)
|
||||
0:19 'invocation' ( temp highp uint)
|
||||
0:19 mod ( temp mediump uint)
|
||||
0:19 add ( temp mediump uint)
|
||||
0:19 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:19 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:19 Constant:
|
||||
0:19 4 (const uint)
|
||||
0:21 move second child to first child ( temp highp 2-component vector of float)
|
||||
0:21 vector swizzle ( temp highp 2-component vector of float)
|
||||
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Sequence
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 subgroupClusteredAdd ( global highp 2-component vector of float)
|
||||
0:21 vector swizzle ( temp highp 2-component vector of float)
|
||||
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Sequence
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const uint)
|
||||
0:23 move second child to first child ( temp highp float)
|
||||
0:23 direct index ( temp highp float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 subgroupClusteredMul ( global highp float)
|
||||
0:23 direct index ( temp highp float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 3 (const uint)
|
||||
0:25 move second child to first child ( temp highp 2-component vector of int)
|
||||
0:25 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Sequence
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 subgroupClusteredMin ( global highp 2-component vector of int)
|
||||
0:25 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Sequence
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 8 (const uint)
|
||||
0:26 move second child to first child ( temp highp 3-component vector of int)
|
||||
0:26 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 subgroupClusteredMin ( global highp 3-component vector of int)
|
||||
0:26 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Sequence
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 2 (const int)
|
||||
0:26 Constant:
|
||||
0:26 6 (const uint)
|
||||
0:28 move second child to first child ( temp highp int)
|
||||
0:28 direct index ( temp highp int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 subgroupClusteredOr ( global highp int)
|
||||
0:28 direct index ( temp highp int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Convert int to uint ( temp highp uint)
|
||||
0:28 'a' ( temp highp int)
|
||||
0:29 move second child to first child ( temp highp 2-component vector of int)
|
||||
0:29 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 subgroupClusteredOr ( global highp 2-component vector of int)
|
||||
0:29 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Sequence
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const uint)
|
||||
0:31 move second child to first child ( temp highp int)
|
||||
0:31 direct index ( temp highp int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 subgroupClusteredXor ( global highp int)
|
||||
0:31 direct index ( temp highp int)
|
||||
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Convert int to uint ( temp highp uint)
|
||||
0:31 add ( temp highp int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 'a' ( temp highp int)
|
||||
0:32 move second child to first child ( temp highp 2-component vector of int)
|
||||
0:32 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Sequence
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 subgroupClusteredXor ( global highp 2-component vector of int)
|
||||
0:32 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Sequence
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Convert int to uint ( temp highp uint)
|
||||
0:32 add ( temp highp int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 'a' ( temp highp int)
|
||||
0:33 move second child to first child ( temp highp 3-component vector of int)
|
||||
0:33 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 subgroupClusteredXor ( global highp 3-component vector of int)
|
||||
0:33 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const uint)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
|
||||
|
14471
Test/baseResults/glsl.es320.subgroupPartitioned.comp.out
Normal file
14471
Test/baseResults/glsl.es320.subgroupPartitioned.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
3429
Test/baseResults/glsl.es320.subgroupQuad.comp.out
Normal file
3429
Test/baseResults/glsl.es320.subgroupQuad.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
1773
Test/baseResults/glsl.es320.subgroupShuffle.comp.out
Normal file
1773
Test/baseResults/glsl.es320.subgroupShuffle.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
1773
Test/baseResults/glsl.es320.subgroupShuffleRelative.comp.out
Normal file
1773
Test/baseResults/glsl.es320.subgroupShuffleRelative.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
845
Test/baseResults/glsl.es320.subgroupVote.comp.out
Normal file
845
Test/baseResults/glsl.es320.subgroupVote.comp.out
Normal file
@ -0,0 +1,845 @@
|
||||
glsl.es320.subgroupVote.comp
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_vote
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp highp uint)
|
||||
0:17 'invocation' ( temp highp uint)
|
||||
0:17 mod ( temp mediump uint)
|
||||
0:17 add ( temp mediump uint)
|
||||
0:17 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:17 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:17 Constant:
|
||||
0:17 4 (const uint)
|
||||
0:19 Test condition and select ( temp void)
|
||||
0:19 Condition
|
||||
0:19 subgroupAll ( global bool)
|
||||
0:19 Compare Less Than ( temp bool)
|
||||
0:19 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:19 Constant:
|
||||
0:19 0 (const int)
|
||||
0:19 Constant:
|
||||
0:19 3 (const int)
|
||||
0:19 Constant:
|
||||
0:19 0 (const int)
|
||||
0:19 true case
|
||||
0:21 Sequence
|
||||
0:21 move second child to first child ( temp highp int)
|
||||
0:21 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 3 (const int)
|
||||
0:21 Convert bool to int ( temp highp int)
|
||||
0:21 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:21 direct index ( temp highp float)
|
||||
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:22 move second child to first child ( temp highp int)
|
||||
0:22 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 3 (const int)
|
||||
0:22 Convert bool to int ( temp highp int)
|
||||
0:22 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:22 vector swizzle ( temp highp 2-component vector of float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:23 move second child to first child ( temp highp int)
|
||||
0:23 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 3 (const int)
|
||||
0:23 Convert bool to int ( temp highp int)
|
||||
0:23 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:23 vector swizzle ( temp highp 3-component vector of float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:24 move second child to first child ( temp highp int)
|
||||
0:24 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 3 (const int)
|
||||
0:24 Convert bool to int ( temp highp int)
|
||||
0:24 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 Constant:
|
||||
0:24 3 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:26 move second child to first child ( temp highp int)
|
||||
0:26 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 3 (const int)
|
||||
0:26 Convert bool to int ( temp highp int)
|
||||
0:26 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:26 direct index ( temp highp int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:27 move second child to first child ( temp highp int)
|
||||
0:27 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 3 (const int)
|
||||
0:27 Convert bool to int ( temp highp int)
|
||||
0:27 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:27 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Sequence
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:28 move second child to first child ( temp highp int)
|
||||
0:28 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:28 Convert bool to int ( temp highp int)
|
||||
0:28 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:28 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Sequence
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:29 move second child to first child ( temp highp int)
|
||||
0:29 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 Convert bool to int ( temp highp int)
|
||||
0:29 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:31 move second child to first child ( temp highp int)
|
||||
0:31 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 3 (const int)
|
||||
0:31 Convert bool to int ( temp highp int)
|
||||
0:31 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:31 direct index ( temp highp uint)
|
||||
0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 2 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:32 move second child to first child ( temp highp int)
|
||||
0:32 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 3 (const int)
|
||||
0:32 Convert bool to int ( temp highp int)
|
||||
0:32 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:32 vector swizzle ( temp highp 2-component vector of uint)
|
||||
0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Constant:
|
||||
0:32 2 (const int)
|
||||
0:32 Sequence
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:33 move second child to first child ( temp highp int)
|
||||
0:33 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 3 (const int)
|
||||
0:33 Convert bool to int ( temp highp int)
|
||||
0:33 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:33 vector swizzle ( temp highp 3-component vector of uint)
|
||||
0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:34 move second child to first child ( temp highp int)
|
||||
0:34 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 3 (const int)
|
||||
0:34 Convert bool to int ( temp highp int)
|
||||
0:34 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 Constant:
|
||||
0:34 3 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:19 false case
|
||||
0:36 Test condition and select ( temp void)
|
||||
0:36 Condition
|
||||
0:36 subgroupAny ( global bool)
|
||||
0:36 Compare Less Than ( temp bool)
|
||||
0:36 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 3 (const int)
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 true case
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child ( temp highp int)
|
||||
0:38 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 3 (const int)
|
||||
0:38 Construct int ( temp highp int)
|
||||
0:38 Convert bool to int ( temp highp int)
|
||||
0:38 subgroupAllEqual ( global bool)
|
||||
0:38 Compare Less Than ( temp bool)
|
||||
0:38 direct index ( temp highp int)
|
||||
0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:39 move second child to first child ( temp highp int)
|
||||
0:39 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Constant:
|
||||
0:39 3 (const int)
|
||||
0:39 Construct int ( temp highp int)
|
||||
0:39 Construct ivec2 ( temp highp 2-component vector of int)
|
||||
0:39 Convert bool to int ( temp highp int)
|
||||
0:39 subgroupAllEqual ( global bool)
|
||||
0:39 Compare Less Than ( global 2-component vector of bool, operation at highp)
|
||||
0:39 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Sequence
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 0 (const int)
|
||||
0:40 move second child to first child ( temp highp int)
|
||||
0:40 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 3 (const int)
|
||||
0:40 Construct int ( temp highp int)
|
||||
0:40 Construct ivec3 ( temp highp 3-component vector of int)
|
||||
0:40 Convert bool to int ( temp highp int)
|
||||
0:40 subgroupAllEqual ( global bool)
|
||||
0:40 Compare Less Than ( global 3-component vector of bool, operation at highp)
|
||||
0:40 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Sequence
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 2 (const int)
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 0 (const int)
|
||||
0:40 0 (const int)
|
||||
0:41 move second child to first child ( temp highp int)
|
||||
0:41 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 3 (const int)
|
||||
0:41 Construct int ( temp highp int)
|
||||
0:41 Construct ivec4 ( temp highp 4-component vector of int)
|
||||
0:41 Convert bool to int ( temp highp int)
|
||||
0:41 subgroupAllEqual ( global bool)
|
||||
0:41 Compare Less Than ( global 4-component vector of bool, operation at highp)
|
||||
0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 0 (const int)
|
||||
0:41 0 (const int)
|
||||
0:41 0 (const int)
|
||||
0:41 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 320
|
||||
Requested GL_KHR_shader_subgroup_basic
|
||||
Requested GL_KHR_shader_subgroup_vote
|
||||
local_size = (8, 8, 1)
|
||||
0:? Sequence
|
||||
0:15 Function Definition: main( ( global void)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child ( temp highp uint)
|
||||
0:17 'invocation' ( temp highp uint)
|
||||
0:17 mod ( temp mediump uint)
|
||||
0:17 add ( temp mediump uint)
|
||||
0:17 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
|
||||
0:17 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
|
||||
0:17 Constant:
|
||||
0:17 4 (const uint)
|
||||
0:19 Test condition and select ( temp void)
|
||||
0:19 Condition
|
||||
0:19 subgroupAll ( global bool)
|
||||
0:19 Compare Less Than ( temp bool)
|
||||
0:19 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:19 Constant:
|
||||
0:19 0 (const int)
|
||||
0:19 Constant:
|
||||
0:19 3 (const int)
|
||||
0:19 Constant:
|
||||
0:19 0 (const int)
|
||||
0:19 true case
|
||||
0:21 Sequence
|
||||
0:21 move second child to first child ( temp highp int)
|
||||
0:21 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 3 (const int)
|
||||
0:21 Convert bool to int ( temp highp int)
|
||||
0:21 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:21 direct index ( temp highp float)
|
||||
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:22 move second child to first child ( temp highp int)
|
||||
0:22 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 3 (const int)
|
||||
0:22 Convert bool to int ( temp highp int)
|
||||
0:22 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:22 vector swizzle ( temp highp 2-component vector of float)
|
||||
0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:23 move second child to first child ( temp highp int)
|
||||
0:23 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 3 (const int)
|
||||
0:23 Convert bool to int ( temp highp int)
|
||||
0:23 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:23 vector swizzle ( temp highp 3-component vector of float)
|
||||
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Sequence
|
||||
0:23 Constant:
|
||||
0:23 0 (const int)
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:24 move second child to first child ( temp highp int)
|
||||
0:24 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:24 Constant:
|
||||
0:24 3 (const int)
|
||||
0:24 Convert bool to int ( temp highp int)
|
||||
0:24 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
|
||||
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:24 Constant:
|
||||
0:24 3 (const int)
|
||||
0:24 Constant:
|
||||
0:24 0 (const int)
|
||||
0:26 move second child to first child ( temp highp int)
|
||||
0:26 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 3 (const int)
|
||||
0:26 Convert bool to int ( temp highp int)
|
||||
0:26 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:26 direct index ( temp highp int)
|
||||
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:27 move second child to first child ( temp highp int)
|
||||
0:27 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 3 (const int)
|
||||
0:27 Convert bool to int ( temp highp int)
|
||||
0:27 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:27 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:27 Sequence
|
||||
0:27 Constant:
|
||||
0:27 0 (const int)
|
||||
0:27 Constant:
|
||||
0:27 1 (const int)
|
||||
0:28 move second child to first child ( temp highp int)
|
||||
0:28 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:28 Convert bool to int ( temp highp int)
|
||||
0:28 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:28 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Sequence
|
||||
0:28 Constant:
|
||||
0:28 0 (const int)
|
||||
0:28 Constant:
|
||||
0:28 1 (const int)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:29 move second child to first child ( temp highp int)
|
||||
0:29 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 Convert bool to int ( temp highp int)
|
||||
0:29 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:31 move second child to first child ( temp highp int)
|
||||
0:31 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 3 (const int)
|
||||
0:31 Convert bool to int ( temp highp int)
|
||||
0:31 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:31 direct index ( temp highp uint)
|
||||
0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:31 Constant:
|
||||
0:31 2 (const int)
|
||||
0:31 Constant:
|
||||
0:31 0 (const int)
|
||||
0:32 move second child to first child ( temp highp int)
|
||||
0:32 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 3 (const int)
|
||||
0:32 Convert bool to int ( temp highp int)
|
||||
0:32 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:32 vector swizzle ( temp highp 2-component vector of uint)
|
||||
0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Constant:
|
||||
0:32 2 (const int)
|
||||
0:32 Sequence
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:33 move second child to first child ( temp highp int)
|
||||
0:33 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 3 (const int)
|
||||
0:33 Convert bool to int ( temp highp int)
|
||||
0:33 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:33 vector swizzle ( temp highp 3-component vector of uint)
|
||||
0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Sequence
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:34 move second child to first child ( temp highp int)
|
||||
0:34 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 Constant:
|
||||
0:34 0 (const int)
|
||||
0:34 Constant:
|
||||
0:34 3 (const int)
|
||||
0:34 Convert bool to int ( temp highp int)
|
||||
0:34 subgroupAllEqual ( global bool, operation at highp)
|
||||
0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
|
||||
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:34 Constant:
|
||||
0:34 3 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:19 false case
|
||||
0:36 Test condition and select ( temp void)
|
||||
0:36 Condition
|
||||
0:36 subgroupAny ( global bool)
|
||||
0:36 Compare Less Than ( temp bool)
|
||||
0:36 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 3 (const int)
|
||||
0:36 Constant:
|
||||
0:36 0 (const int)
|
||||
0:36 true case
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child ( temp highp int)
|
||||
0:38 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 3 (const int)
|
||||
0:38 Construct int ( temp highp int)
|
||||
0:38 Convert bool to int ( temp highp int)
|
||||
0:38 subgroupAllEqual ( global bool)
|
||||
0:38 Compare Less Than ( temp bool)
|
||||
0:38 direct index ( temp highp int)
|
||||
0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:39 move second child to first child ( temp highp int)
|
||||
0:39 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Constant:
|
||||
0:39 3 (const int)
|
||||
0:39 Construct int ( temp highp int)
|
||||
0:39 Construct ivec2 ( temp highp 2-component vector of int)
|
||||
0:39 Convert bool to int ( temp highp int)
|
||||
0:39 subgroupAllEqual ( global bool)
|
||||
0:39 Compare Less Than ( global 2-component vector of bool, operation at highp)
|
||||
0:39 vector swizzle ( temp highp 2-component vector of int)
|
||||
0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Sequence
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 1 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 0 (const int)
|
||||
0:40 move second child to first child ( temp highp int)
|
||||
0:40 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 3 (const int)
|
||||
0:40 Construct int ( temp highp int)
|
||||
0:40 Construct ivec3 ( temp highp 3-component vector of int)
|
||||
0:40 Convert bool to int ( temp highp int)
|
||||
0:40 subgroupAllEqual ( global bool)
|
||||
0:40 Compare Less Than ( global 3-component vector of bool, operation at highp)
|
||||
0:40 vector swizzle ( temp highp 3-component vector of int)
|
||||
0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Sequence
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 2 (const int)
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 0 (const int)
|
||||
0:40 0 (const int)
|
||||
0:41 move second child to first child ( temp highp int)
|
||||
0:41 r: direct index for structure (layout( column_major shared) buffer highp int)
|
||||
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 3 (const int)
|
||||
0:41 Construct int ( temp highp int)
|
||||
0:41 Construct ivec4 ( temp highp 4-component vector of int)
|
||||
0:41 Convert bool to int ( temp highp int)
|
||||
0:41 subgroupAllEqual ( global bool)
|
||||
0:41 Compare Less Than ( global 4-component vector of bool, operation at highp)
|
||||
0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
|
||||
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 1 (const int)
|
||||
0:41 Constant:
|
||||
0:41 0 (const int)
|
||||
0:41 0 (const int)
|
||||
0:41 0 (const int)
|
||||
0:41 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
|
||||
0:? 8 (const uint)
|
||||
0:? 8 (const uint)
|
||||
0:? 1 (const uint)
|
||||
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
|
||||
|
7
Test/glsl.450.subgroup.frag
Normal file
7
Test/glsl.450.subgroup.frag
Normal file
@ -0,0 +1,7 @@
|
||||
#version 450
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(location = 0) out uvec4 data;
|
||||
void main (void)
|
||||
{
|
||||
data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
13
Test/glsl.450.subgroup.geom
Normal file
13
Test/glsl.450.subgroup.geom
Normal file
@ -0,0 +1,13 @@
|
||||
#version 450
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(points) in;
|
||||
layout(points, max_vertices = 1) out;
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
12
Test/glsl.450.subgroup.tesc
Normal file
12
Test/glsl.450.subgroup.tesc
Normal file
@ -0,0 +1,12 @@
|
||||
#version 450
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(vertices=1) out;
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
12
Test/glsl.450.subgroup.tese
Normal file
12
Test/glsl.450.subgroup.tese
Normal file
@ -0,0 +1,12 @@
|
||||
#version 450
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(isolines) in;
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
11
Test/glsl.450.subgroup.vert
Normal file
11
Test/glsl.450.subgroup.vert
Normal file
@ -0,0 +1,11 @@
|
||||
#version 450
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
393
Test/glsl.450.subgroupArithmetic.comp
Normal file
393
Test/glsl.450.subgroupArithmetic.comp
Normal file
@ -0,0 +1,393 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_arithmetic: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
data[invocation].f4.x = subgroupAdd(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupAdd(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupAdd(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupAdd(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupAdd(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupAdd(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupAdd(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupAdd(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupAdd(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupAdd(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupAdd(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupAdd(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupMul(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupMul(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupMul(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupMul(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupMul(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupMul(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupMul(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupMul(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupMul(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupMul(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupMul(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupMul(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupMin(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupMin(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupMin(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupMin(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupMin(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupMin(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupMin(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupMin(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupMin(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupMin(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupMin(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupMin(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupMax(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupMax(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupMax(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupMax(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupMax(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupMax(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupMax(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupMax(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupMax(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupMax(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupMax(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupMax(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = subgroupAnd(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupAnd(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupAnd(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupAnd(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupAnd(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupAnd(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].i4.x = subgroupOr(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupOr(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupOr(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupOr(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupOr(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupOr(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].i4.x = subgroupXor(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupXor(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupXor(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupXor(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupXor(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupXor(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupInclusiveAdd(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveAdd(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveAdd(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupInclusiveAdd(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupInclusiveMul(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveMul(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveMul(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupInclusiveMul(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupInclusiveMin(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveMin(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveMin(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupInclusiveMin(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupInclusiveMax(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveMax(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveMax(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupInclusiveMax(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveAnd(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveAnd(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveOr(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveOr(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupInclusiveXor(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupInclusiveXor(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupExclusiveAdd(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveAdd(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveAdd(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupExclusiveAdd(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupExclusiveMul(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveMul(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveMul(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupExclusiveMul(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupExclusiveMin(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveMin(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveMin(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupExclusiveMin(data[3].d4);
|
||||
|
||||
data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupExclusiveMax(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveMax(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveMax(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupExclusiveMax(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveAnd(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveAnd(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveOr(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveOr(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupExclusiveXor(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupExclusiveXor(data[3].u4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0))));
|
||||
}
|
86
Test/glsl.450.subgroupBallot.comp
Normal file
86
Test/glsl.450.subgroupBallot.comp
Normal file
@ -0,0 +1,86 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_ballot: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
uvec4 relMask = gl_SubgroupEqMask +
|
||||
gl_SubgroupGeMask +
|
||||
gl_SubgroupGtMask +
|
||||
gl_SubgroupLeMask +
|
||||
gl_SubgroupLtMask;
|
||||
|
||||
uvec4 result = subgroupBallot(true);
|
||||
|
||||
data[invocation].u4.x = subgroupBallotBitCount(result);
|
||||
data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
|
||||
data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
|
||||
data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
|
||||
|
||||
if ((relMask == result) && subgroupInverseBallot(data[0].u4))
|
||||
{
|
||||
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, 3);
|
||||
data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, 3);
|
||||
data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3);
|
||||
data[invocation].f4 = subgroupBroadcast(data[3].f4, 3);
|
||||
|
||||
data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, 2);
|
||||
data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, 2);
|
||||
data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2);
|
||||
data[invocation].i4 = subgroupBroadcast(data[3].i4, 2);
|
||||
|
||||
data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupBroadcast(data[3].u4, 1);
|
||||
|
||||
data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, 0);
|
||||
data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, 0);
|
||||
data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, 0);
|
||||
data[invocation].d4 = subgroupBroadcast(data[3].d4, 0);
|
||||
|
||||
data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1));
|
||||
data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
|
||||
data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
|
||||
data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
data[invocation].f4.x = subgroupBroadcastFirst(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupBroadcastFirst(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupBroadcastFirst(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupBroadcastFirst(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupBroadcastFirst(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupBroadcastFirst(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupBroadcastFirst(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupBroadcastFirst(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupBroadcastFirst(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupBroadcastFirst(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupBroadcastFirst(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupBroadcastFirst(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupBroadcastFirst(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0))));
|
||||
}
|
||||
}
|
33
Test/glsl.450.subgroupBallotNeg.comp
Normal file
33
Test/glsl.450.subgroupBallotNeg.comp
Normal file
@ -0,0 +1,33 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_ballot: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
uvec4 relMask = gl_SubgroupEqMask +
|
||||
gl_SubgroupGeMask +
|
||||
gl_SubgroupGtMask +
|
||||
gl_SubgroupLeMask +
|
||||
gl_SubgroupLtMask;
|
||||
|
||||
uvec4 result = subgroupBallot(true);
|
||||
|
||||
data[invocation].u4.x = subgroupBallotBitCount(result);
|
||||
data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
|
||||
data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
|
||||
data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
|
||||
|
||||
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
|
||||
}
|
23
Test/glsl.450.subgroupBasic.comp
Normal file
23
Test/glsl.450.subgroupBasic.comp
Normal file
@ -0,0 +1,23 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffer
|
||||
{
|
||||
int a[];
|
||||
} data;
|
||||
|
||||
void main()
|
||||
{
|
||||
data.a[gl_SubgroupSize] = 1;
|
||||
data.a[gl_SubgroupInvocationID] = 1;
|
||||
data.a[gl_NumSubgroups] = 1;
|
||||
data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0;
|
||||
subgroupBarrier();
|
||||
subgroupMemoryBarrier();
|
||||
subgroupMemoryBarrierBuffer();
|
||||
subgroupMemoryBarrierShared();
|
||||
subgroupMemoryBarrierImage();
|
||||
}
|
143
Test/glsl.450.subgroupClustered.comp
Normal file
143
Test/glsl.450.subgroupClustered.comp
Normal file
@ -0,0 +1,143 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_clustered: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
data[invocation].f4.x = subgroupClusteredAdd(data[0].f4.x, 1);
|
||||
data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1);
|
||||
data[invocation].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1);
|
||||
data[invocation].f4 = subgroupClusteredAdd(data[3].f4, 1);
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredAdd(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredAdd(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredAdd(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredAdd(data[3].u4, 1);
|
||||
|
||||
data[invocation].d4.x = subgroupClusteredAdd(data[0].d4.x, 1);
|
||||
data[invocation].d4.xy = subgroupClusteredAdd(data[1].d4.xy, 1);
|
||||
data[invocation].d4.xyz = subgroupClusteredAdd(data[2].d4.xyz, 1);
|
||||
data[invocation].d4 = subgroupClusteredAdd(data[3].d4, 1);
|
||||
|
||||
data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 1);
|
||||
data[invocation].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1);
|
||||
data[invocation].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1);
|
||||
data[invocation].f4 = subgroupClusteredMul(data[3].f4, 1);
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredMul(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredMul(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredMul(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredMul(data[3].u4, 1);
|
||||
|
||||
data[invocation].d4.x = subgroupClusteredMul(data[0].d4.x, 1);
|
||||
data[invocation].d4.xy = subgroupClusteredMul(data[1].d4.xy, 1);
|
||||
data[invocation].d4.xyz = subgroupClusteredMul(data[2].d4.xyz, 1);
|
||||
data[invocation].d4 = subgroupClusteredMul(data[3].d4, 1);
|
||||
|
||||
data[invocation].f4.x = subgroupClusteredMin(data[0].f4.x, 1);
|
||||
data[invocation].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1);
|
||||
data[invocation].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1);
|
||||
data[invocation].f4 = subgroupClusteredMin(data[3].f4, 1);
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredMin(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredMin(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredMin(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredMin(data[3].u4, 1);
|
||||
|
||||
data[invocation].d4.x = subgroupClusteredMin(data[0].d4.x, 1);
|
||||
data[invocation].d4.xy = subgroupClusteredMin(data[1].d4.xy, 1);
|
||||
data[invocation].d4.xyz = subgroupClusteredMin(data[2].d4.xyz, 1);
|
||||
data[invocation].d4 = subgroupClusteredMin(data[3].d4, 1);
|
||||
|
||||
data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, 1);
|
||||
data[invocation].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1);
|
||||
data[invocation].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1);
|
||||
data[invocation].f4 = subgroupClusteredMax(data[3].f4, 1);
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredMax(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredMax(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredMax(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredMax(data[3].u4, 1);
|
||||
|
||||
data[invocation].d4.x = subgroupClusteredMax(data[0].d4.x, 1);
|
||||
data[invocation].d4.xy = subgroupClusteredMax(data[1].d4.xy, 1);
|
||||
data[invocation].d4.xyz = subgroupClusteredMax(data[2].d4.xyz, 1);
|
||||
data[invocation].d4 = subgroupClusteredMax(data[3].d4, 1);
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredAnd(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredAnd(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredAnd(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredAnd(data[3].u4, 1);
|
||||
|
||||
data[invocation].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1));
|
||||
data[invocation].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1));
|
||||
data[invocation].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1));
|
||||
data[invocation].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1));
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredOr(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredOr(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredOr(data[3].u4, 1);
|
||||
|
||||
data[invocation].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1));
|
||||
data[invocation].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1));
|
||||
data[invocation].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1));
|
||||
data[invocation].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1));
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupClusteredXor(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupClusteredXor(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupClusteredXor(data[3].u4, 1);
|
||||
|
||||
data[invocation].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1));
|
||||
data[invocation].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1));
|
||||
data[invocation].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1));
|
||||
data[invocation].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1));
|
||||
}
|
39
Test/glsl.450.subgroupClusteredNeg.comp
Normal file
39
Test/glsl.450.subgroupClusteredNeg.comp
Normal file
@ -0,0 +1,39 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_clustered: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
int a = 1;
|
||||
const int aConst = 1;
|
||||
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0); // ERROR, less than 1
|
||||
|
||||
data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 3); // ERROR, not a power of 2
|
||||
|
||||
data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8);
|
||||
data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6); // ERROR, not a power of 2
|
||||
|
||||
data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, -1); // ERROR, less than 1
|
||||
|
||||
data[invocation].i4 = subgroupClusteredAnd(data[3].i4, -3); // ERROR, less than 1
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, a); // ERROR, not constant
|
||||
data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, aConst);
|
||||
|
||||
data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1 + a); // ERROR, not constant
|
||||
data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, aConst + a); // ERROR, not constant
|
||||
data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1 + aConst);
|
||||
}
|
420
Test/glsl.450.subgroupPartitioned.comp
Normal file
420
Test/glsl.450.subgroupPartitioned.comp
Normal file
@ -0,0 +1,420 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_NV_shader_subgroup_partitioned: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
uvec4 ballot = subgroupPartitionNV(invocation);
|
||||
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].f4.x);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].f4);
|
||||
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].i4.x);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].i4);
|
||||
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].u4.x);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].u4);
|
||||
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].d4.x);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz);
|
||||
data[invocation].u4 = subgroupPartitionNV(data[0].d4);
|
||||
|
||||
data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x));
|
||||
data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
|
||||
data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
|
||||
data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4));
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
|
||||
data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
|
||||
data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
|
||||
data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot);
|
||||
data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot);
|
||||
data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot);
|
||||
data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot);
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
|
||||
data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
|
||||
data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
|
||||
data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
|
||||
|
||||
data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
|
||||
data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
|
||||
data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
|
||||
data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
|
||||
|
||||
data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
|
||||
data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
}
|
118
Test/glsl.450.subgroupQuad.comp
Normal file
118
Test/glsl.450.subgroupQuad.comp
Normal file
@ -0,0 +1,118 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_quad: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
data[invocation].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1);
|
||||
data[invocation].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1);
|
||||
data[invocation].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1);
|
||||
data[invocation].f4 = subgroupQuadBroadcast(data[3].f4, 1);
|
||||
|
||||
data[invocation].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1);
|
||||
data[invocation].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1);
|
||||
data[invocation].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1);
|
||||
data[invocation].i4 = subgroupQuadBroadcast(data[3].i4, 1);
|
||||
|
||||
data[invocation].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1);
|
||||
data[invocation].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1);
|
||||
data[invocation].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1);
|
||||
data[invocation].u4 = subgroupQuadBroadcast(data[3].u4, 1);
|
||||
|
||||
data[invocation].d4.x = subgroupQuadBroadcast(data[0].d4.x, 1);
|
||||
data[invocation].d4.xy = subgroupQuadBroadcast(data[1].d4.xy, 1);
|
||||
data[invocation].d4.xyz = subgroupQuadBroadcast(data[2].d4.xyz, 1);
|
||||
data[invocation].d4 = subgroupQuadBroadcast(data[3].d4, 1);
|
||||
|
||||
data[invocation].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1));
|
||||
data[invocation].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
|
||||
data[invocation].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
|
||||
data[invocation].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
|
||||
|
||||
data[invocation].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupQuadSwapHorizontal(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupQuadSwapHorizontal(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupQuadSwapHorizontal(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupQuadSwapHorizontal(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupQuadSwapHorizontal(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupQuadSwapHorizontal(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupQuadSwapHorizontal(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].f4.x = subgroupQuadSwapVertical(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupQuadSwapVertical(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupQuadSwapVertical(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupQuadSwapVertical(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupQuadSwapVertical(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupQuadSwapVertical(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupQuadSwapVertical(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupQuadSwapVertical(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupQuadSwapVertical(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupQuadSwapVertical(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[invocation].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x);
|
||||
data[invocation].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy);
|
||||
data[invocation].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz);
|
||||
data[invocation].f4 = subgroupQuadSwapDiagonal(data[3].f4);
|
||||
|
||||
data[invocation].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x);
|
||||
data[invocation].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy);
|
||||
data[invocation].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz);
|
||||
data[invocation].i4 = subgroupQuadSwapDiagonal(data[3].i4);
|
||||
|
||||
data[invocation].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x);
|
||||
data[invocation].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy);
|
||||
data[invocation].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz);
|
||||
data[invocation].u4 = subgroupQuadSwapDiagonal(data[3].u4);
|
||||
|
||||
data[invocation].d4.x = subgroupQuadSwapDiagonal(data[0].d4.x);
|
||||
data[invocation].d4.xy = subgroupQuadSwapDiagonal(data[1].d4.xy);
|
||||
data[invocation].d4.xyz = subgroupQuadSwapDiagonal(data[2].d4.xyz);
|
||||
data[invocation].d4 = subgroupQuadSwapDiagonal(data[3].d4);
|
||||
|
||||
data[invocation].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0));
|
||||
data[invocation].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[invocation].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[invocation].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0))));
|
||||
}
|
68
Test/glsl.450.subgroupShuffle.comp
Normal file
68
Test/glsl.450.subgroupShuffle.comp
Normal file
@ -0,0 +1,68 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_shuffle: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
data[invocation].f4.x = subgroupShuffle(data[0].f4.x, invocation);
|
||||
data[invocation].f4.xy = subgroupShuffle(data[1].f4.xy, invocation);
|
||||
data[invocation].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation);
|
||||
data[invocation].f4 = subgroupShuffle(data[3].f4, invocation);
|
||||
|
||||
data[invocation].i4.x = subgroupShuffle(data[0].i4.x, invocation);
|
||||
data[invocation].i4.xy = subgroupShuffle(data[1].i4.xy, invocation);
|
||||
data[invocation].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation);
|
||||
data[invocation].i4 = subgroupShuffle(data[3].i4, invocation);
|
||||
|
||||
data[invocation].u4.x = subgroupShuffle(data[0].u4.x, invocation);
|
||||
data[invocation].u4.xy = subgroupShuffle(data[1].u4.xy, invocation);
|
||||
data[invocation].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation);
|
||||
data[invocation].u4 = subgroupShuffle(data[3].u4, invocation);
|
||||
|
||||
data[invocation].d4.x = subgroupShuffle(data[0].d4.x, invocation);
|
||||
data[invocation].d4.xy = subgroupShuffle(data[1].d4.xy, invocation);
|
||||
data[invocation].d4.xyz = subgroupShuffle(data[2].d4.xyz, invocation);
|
||||
data[invocation].d4 = subgroupShuffle(data[3].d4, invocation);
|
||||
|
||||
data[invocation].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation));
|
||||
data[invocation].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[invocation].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[invocation].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
|
||||
data[invocation].f4.x = subgroupShuffleXor(data[0].f4.x, invocation);
|
||||
data[invocation].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation);
|
||||
data[invocation].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation);
|
||||
data[invocation].f4 = subgroupShuffleXor(data[3].f4, invocation);
|
||||
|
||||
data[invocation].i4.x = subgroupShuffleXor(data[0].i4.x, invocation);
|
||||
data[invocation].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation);
|
||||
data[invocation].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation);
|
||||
data[invocation].i4 = subgroupShuffleXor(data[3].i4, invocation);
|
||||
|
||||
data[invocation].u4.x = subgroupShuffleXor(data[0].u4.x, invocation);
|
||||
data[invocation].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation);
|
||||
data[invocation].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation);
|
||||
data[invocation].u4 = subgroupShuffleXor(data[3].u4, invocation);
|
||||
|
||||
data[invocation].d4.x = subgroupShuffleXor(data[0].d4.x, invocation);
|
||||
data[invocation].d4.xy = subgroupShuffleXor(data[1].d4.xy, invocation);
|
||||
data[invocation].d4.xyz = subgroupShuffleXor(data[2].d4.xyz, invocation);
|
||||
data[invocation].d4 = subgroupShuffleXor(data[3].d4, invocation);
|
||||
|
||||
data[invocation].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation));
|
||||
data[invocation].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[invocation].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[invocation].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
}
|
68
Test/glsl.450.subgroupShuffleRelative.comp
Normal file
68
Test/glsl.450.subgroupShuffleRelative.comp
Normal file
@ -0,0 +1,68 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_shuffle_relative: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
data[invocation].f4.x = subgroupShuffleUp(data[0].f4.x, invocation);
|
||||
data[invocation].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation);
|
||||
data[invocation].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation);
|
||||
data[invocation].f4 = subgroupShuffleUp(data[3].f4, invocation);
|
||||
|
||||
data[invocation].i4.x = subgroupShuffleUp(data[0].i4.x, invocation);
|
||||
data[invocation].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation);
|
||||
data[invocation].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation);
|
||||
data[invocation].i4 = subgroupShuffleUp(data[3].i4, invocation);
|
||||
|
||||
data[invocation].u4.x = subgroupShuffleUp(data[0].u4.x, invocation);
|
||||
data[invocation].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation);
|
||||
data[invocation].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation);
|
||||
data[invocation].u4 = subgroupShuffleUp(data[3].u4, invocation);
|
||||
|
||||
data[invocation].d4.x = subgroupShuffleUp(data[0].d4.x, invocation);
|
||||
data[invocation].d4.xy = subgroupShuffleUp(data[1].d4.xy, invocation);
|
||||
data[invocation].d4.xyz = subgroupShuffleUp(data[2].d4.xyz, invocation);
|
||||
data[invocation].d4 = subgroupShuffleUp(data[3].d4, invocation);
|
||||
|
||||
data[invocation].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation));
|
||||
data[invocation].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[invocation].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[invocation].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
|
||||
data[invocation].f4.x = subgroupShuffleDown(data[0].f4.x, invocation);
|
||||
data[invocation].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation);
|
||||
data[invocation].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation);
|
||||
data[invocation].f4 = subgroupShuffleDown(data[3].f4, invocation);
|
||||
|
||||
data[invocation].i4.x = subgroupShuffleDown(data[0].i4.x, invocation);
|
||||
data[invocation].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation);
|
||||
data[invocation].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation);
|
||||
data[invocation].i4 = subgroupShuffleDown(data[3].i4, invocation);
|
||||
|
||||
data[invocation].u4.x = subgroupShuffleDown(data[0].u4.x, invocation);
|
||||
data[invocation].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation);
|
||||
data[invocation].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation);
|
||||
data[invocation].u4 = subgroupShuffleDown(data[3].u4, invocation);
|
||||
|
||||
data[invocation].d4.x = subgroupShuffleDown(data[0].d4.x, invocation);
|
||||
data[invocation].d4.xy = subgroupShuffleDown(data[1].d4.xy, invocation);
|
||||
data[invocation].d4.xyz = subgroupShuffleDown(data[2].d4.xyz, invocation);
|
||||
data[invocation].d4 = subgroupShuffleDown(data[3].d4, invocation);
|
||||
|
||||
data[invocation].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation));
|
||||
data[invocation].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[invocation].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[invocation].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
}
|
49
Test/glsl.450.subgroupVote.comp
Normal file
49
Test/glsl.450.subgroupVote.comp
Normal file
@ -0,0 +1,49 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_vote: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
dvec4 d4;
|
||||
int r;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
|
||||
|
||||
if (subgroupAll(data[invocation].r < 0))
|
||||
{
|
||||
data[invocation].r = int(subgroupAllEqual(data[0].f4.x));
|
||||
data[invocation].r = int(subgroupAllEqual(data[1].f4.xy));
|
||||
data[invocation].r = int(subgroupAllEqual(data[2].f4.xyz));
|
||||
data[invocation].r = int(subgroupAllEqual(data[3].f4));
|
||||
|
||||
data[invocation].r = int(subgroupAllEqual(data[0].i4.x));
|
||||
data[invocation].r = int(subgroupAllEqual(data[1].i4.xy));
|
||||
data[invocation].r = int(subgroupAllEqual(data[2].i4.xyz));
|
||||
data[invocation].r = int(subgroupAllEqual(data[3].i4));
|
||||
|
||||
data[invocation].r = int(subgroupAllEqual(data[0].u4.x));
|
||||
data[invocation].r = int(subgroupAllEqual(data[1].u4.xy));
|
||||
data[invocation].r = int(subgroupAllEqual(data[2].u4.xyz));
|
||||
data[invocation].r = int(subgroupAllEqual(data[3].u4));
|
||||
}
|
||||
else if (subgroupAny(data[invocation].r < 0))
|
||||
{
|
||||
data[invocation].r = int(subgroupAllEqual(data[0].d4.x));
|
||||
data[invocation].r = int(subgroupAllEqual(data[1].d4.xy));
|
||||
data[invocation].r = int(subgroupAllEqual(data[2].d4.xyz));
|
||||
data[invocation].r = int(subgroupAllEqual(data[3].d4));
|
||||
|
||||
data[invocation].r = int(int(subgroupAllEqual(data[0].i4.x < 0)));
|
||||
data[invocation].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0)))));
|
||||
data[invocation].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0)))));
|
||||
data[invocation].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0)))));
|
||||
}
|
||||
}
|
7
Test/glsl.es320.subgroup.frag
Normal file
7
Test/glsl.es320.subgroup.frag
Normal file
@ -0,0 +1,7 @@
|
||||
#version 320 es
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(location = 0) out uvec4 data;
|
||||
void main (void)
|
||||
{
|
||||
data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
13
Test/glsl.es320.subgroup.geom
Normal file
13
Test/glsl.es320.subgroup.geom
Normal file
@ -0,0 +1,13 @@
|
||||
#version 320 es
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(points) in;
|
||||
layout(points, max_vertices = 1) out;
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
12
Test/glsl.es320.subgroup.tesc
Normal file
12
Test/glsl.es320.subgroup.tesc
Normal file
@ -0,0 +1,12 @@
|
||||
#version 320 es
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(vertices=1) out;
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
12
Test/glsl.es320.subgroup.tese
Normal file
12
Test/glsl.es320.subgroup.tese
Normal file
@ -0,0 +1,12 @@
|
||||
#version 320 es
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(isolines) in;
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
11
Test/glsl.es320.subgroup.vert
Normal file
11
Test/glsl.es320.subgroup.vert
Normal file
@ -0,0 +1,11 @@
|
||||
#version 320 es
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
layout(set = 0, binding = 0, std430) buffer Output
|
||||
{
|
||||
uvec4 result[];
|
||||
};
|
||||
|
||||
void main (void)
|
||||
{
|
||||
result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
|
||||
}
|
332
Test/glsl.es320.subgroupArithmetic.comp
Normal file
332
Test/glsl.es320.subgroupArithmetic.comp
Normal file
@ -0,0 +1,332 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_arithmetic: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
data[0].f4.x = subgroupAdd(data[0].f4.x);
|
||||
data[0].f4.xy = subgroupAdd(data[1].f4.xy);
|
||||
data[0].f4.xyz = subgroupAdd(data[2].f4.xyz);
|
||||
data[0].f4 = subgroupAdd(data[3].f4);
|
||||
|
||||
data[1].i4.x = subgroupAdd(data[0].i4.x);
|
||||
data[1].i4.xy = subgroupAdd(data[1].i4.xy);
|
||||
data[1].i4.xyz = subgroupAdd(data[2].i4.xyz);
|
||||
data[1].i4 = subgroupAdd(data[3].i4);
|
||||
|
||||
data[2].u4.x = subgroupAdd(data[0].u4.x);
|
||||
data[2].u4.xy = subgroupAdd(data[1].u4.xy);
|
||||
data[2].u4.xyz = subgroupAdd(data[2].u4.xyz);
|
||||
data[2].u4 = subgroupAdd(data[3].u4);
|
||||
|
||||
data[3].f4.x = subgroupMul(data[0].f4.x);
|
||||
data[3].f4.xy = subgroupMul(data[1].f4.xy);
|
||||
data[3].f4.xyz = subgroupMul(data[2].f4.xyz);
|
||||
data[3].f4 = subgroupMul(data[3].f4);
|
||||
|
||||
data[0].i4.x = subgroupMul(data[0].i4.x);
|
||||
data[0].i4.xy = subgroupMul(data[1].i4.xy);
|
||||
data[0].i4.xyz = subgroupMul(data[2].i4.xyz);
|
||||
data[0].i4 = subgroupMul(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupMul(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupMul(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupMul(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupMul(data[3].u4);
|
||||
|
||||
data[2].f4.x = subgroupMin(data[0].f4.x);
|
||||
data[2].f4.xy = subgroupMin(data[1].f4.xy);
|
||||
data[2].f4.xyz = subgroupMin(data[2].f4.xyz);
|
||||
data[2].f4 = subgroupMin(data[3].f4);
|
||||
|
||||
data[3].i4.x = subgroupMin(data[0].i4.x);
|
||||
data[3].i4.xy = subgroupMin(data[1].i4.xy);
|
||||
data[3].i4.xyz = subgroupMin(data[2].i4.xyz);
|
||||
data[3].i4 = subgroupMin(data[3].i4);
|
||||
|
||||
data[0].u4.x = subgroupMin(data[0].u4.x);
|
||||
data[0].u4.xy = subgroupMin(data[1].u4.xy);
|
||||
data[0].u4.xyz = subgroupMin(data[2].u4.xyz);
|
||||
data[0].u4 = subgroupMin(data[3].u4);
|
||||
|
||||
data[1].f4.x = subgroupMax(data[0].f4.x);
|
||||
data[1].f4.xy = subgroupMax(data[1].f4.xy);
|
||||
data[1].f4.xyz = subgroupMax(data[2].f4.xyz);
|
||||
data[1].f4 = subgroupMax(data[3].f4);
|
||||
|
||||
data[2].i4.x = subgroupMax(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupMax(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupMax(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupMax(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupMax(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupMax(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupMax(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupMax(data[3].u4);
|
||||
|
||||
data[0].i4.x = subgroupAnd(data[0].i4.x);
|
||||
data[0].i4.xy = subgroupAnd(data[1].i4.xy);
|
||||
data[0].i4.xyz = subgroupAnd(data[2].i4.xyz);
|
||||
data[0].i4 = subgroupAnd(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupAnd(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupAnd(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupAnd(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupAnd(data[3].u4);
|
||||
|
||||
data[2].i4.x = int(subgroupAnd(data[0].i4.x < 0));
|
||||
data[2].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[2].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[2].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[3].i4.x = subgroupOr(data[0].i4.x);
|
||||
data[3].i4.xy = subgroupOr(data[1].i4.xy);
|
||||
data[3].i4.xyz = subgroupOr(data[2].i4.xyz);
|
||||
data[3].i4 = subgroupOr(data[3].i4);
|
||||
|
||||
data[0].u4.x = subgroupOr(data[0].u4.x);
|
||||
data[0].u4.xy = subgroupOr(data[1].u4.xy);
|
||||
data[0].u4.xyz = subgroupOr(data[2].u4.xyz);
|
||||
data[0].u4 = subgroupOr(data[3].u4);
|
||||
|
||||
data[1].i4.x = int(subgroupOr(data[0].i4.x < 0));
|
||||
data[1].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[1].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[1].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[2].i4.x = subgroupXor(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupXor(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupXor(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupXor(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupXor(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupXor(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupXor(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupXor(data[3].u4);
|
||||
|
||||
data[0].i4.x = int(subgroupXor(data[0].i4.x < 0));
|
||||
data[0].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[0].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[0].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[1].f4.x = subgroupInclusiveAdd(data[0].f4.x);
|
||||
data[1].f4.xy = subgroupInclusiveAdd(data[1].f4.xy);
|
||||
data[1].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz);
|
||||
data[1].f4 = subgroupInclusiveAdd(data[3].f4);
|
||||
|
||||
data[2].i4.x = subgroupInclusiveAdd(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupInclusiveAdd(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupInclusiveAdd(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupInclusiveAdd(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupInclusiveAdd(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupInclusiveAdd(data[3].u4);
|
||||
|
||||
data[0].f4.x = subgroupInclusiveMul(data[0].f4.x);
|
||||
data[0].f4.xy = subgroupInclusiveMul(data[1].f4.xy);
|
||||
data[0].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz);
|
||||
data[0].f4 = subgroupInclusiveMul(data[3].f4);
|
||||
|
||||
data[1].i4.x = subgroupInclusiveMul(data[0].i4.x);
|
||||
data[1].i4.xy = subgroupInclusiveMul(data[1].i4.xy);
|
||||
data[1].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz);
|
||||
data[1].i4 = subgroupInclusiveMul(data[3].i4);
|
||||
|
||||
data[2].u4.x = subgroupInclusiveMul(data[0].u4.x);
|
||||
data[2].u4.xy = subgroupInclusiveMul(data[1].u4.xy);
|
||||
data[2].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz);
|
||||
data[2].u4 = subgroupInclusiveMul(data[3].u4);
|
||||
|
||||
data[3].f4.x = subgroupInclusiveMin(data[0].f4.x);
|
||||
data[3].f4.xy = subgroupInclusiveMin(data[1].f4.xy);
|
||||
data[3].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz);
|
||||
data[3].f4 = subgroupInclusiveMin(data[3].f4);
|
||||
|
||||
data[0].i4.x = subgroupInclusiveMin(data[0].i4.x);
|
||||
data[0].i4.xy = subgroupInclusiveMin(data[1].i4.xy);
|
||||
data[0].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz);
|
||||
data[0].i4 = subgroupInclusiveMin(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupInclusiveMin(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupInclusiveMin(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupInclusiveMin(data[3].u4);
|
||||
|
||||
data[2].f4.x = subgroupInclusiveMax(data[0].f4.x);
|
||||
data[2].f4.xy = subgroupInclusiveMax(data[1].f4.xy);
|
||||
data[2].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz);
|
||||
data[2].f4 = subgroupInclusiveMax(data[3].f4);
|
||||
|
||||
data[3].i4.x = subgroupInclusiveMax(data[0].i4.x);
|
||||
data[3].i4.xy = subgroupInclusiveMax(data[1].i4.xy);
|
||||
data[3].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz);
|
||||
data[3].i4 = subgroupInclusiveMax(data[3].i4);
|
||||
|
||||
data[0].u4.x = subgroupInclusiveMax(data[0].u4.x);
|
||||
data[0].u4.xy = subgroupInclusiveMax(data[1].u4.xy);
|
||||
data[0].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz);
|
||||
data[0].u4 = subgroupInclusiveMax(data[3].u4);
|
||||
|
||||
data[1].i4.x = subgroupInclusiveAnd(data[0].i4.x);
|
||||
data[1].i4.xy = subgroupInclusiveAnd(data[1].i4.xy);
|
||||
data[1].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz);
|
||||
data[1].i4 = subgroupInclusiveAnd(data[3].i4);
|
||||
|
||||
data[2].u4.x = subgroupInclusiveAnd(data[0].u4.x);
|
||||
data[2].u4.xy = subgroupInclusiveAnd(data[1].u4.xy);
|
||||
data[2].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz);
|
||||
data[2].u4 = subgroupInclusiveAnd(data[3].u4);
|
||||
|
||||
data[3].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0));
|
||||
data[3].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[3].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[3].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[0].i4.x = subgroupInclusiveOr(data[0].i4.x);
|
||||
data[0].i4.xy = subgroupInclusiveOr(data[1].i4.xy);
|
||||
data[0].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz);
|
||||
data[0].i4 = subgroupInclusiveOr(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupInclusiveOr(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupInclusiveOr(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupInclusiveOr(data[3].u4);
|
||||
|
||||
data[2].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0));
|
||||
data[2].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[2].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[2].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[3].i4.x = subgroupInclusiveXor(data[0].i4.x);
|
||||
data[3].i4.xy = subgroupInclusiveXor(data[1].i4.xy);
|
||||
data[3].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz);
|
||||
data[3].i4 = subgroupInclusiveXor(data[3].i4);
|
||||
|
||||
data[0].u4.x = subgroupInclusiveXor(data[0].u4.x);
|
||||
data[0].u4.xy = subgroupInclusiveXor(data[1].u4.xy);
|
||||
data[0].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz);
|
||||
data[0].u4 = subgroupInclusiveXor(data[3].u4);
|
||||
|
||||
data[1].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0));
|
||||
data[1].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[1].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[1].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[2].f4.x = subgroupExclusiveAdd(data[0].f4.x);
|
||||
data[2].f4.xy = subgroupExclusiveAdd(data[1].f4.xy);
|
||||
data[2].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz);
|
||||
data[2].f4 = subgroupExclusiveAdd(data[3].f4);
|
||||
|
||||
data[3].i4.x = subgroupExclusiveAdd(data[0].i4.x);
|
||||
data[3].i4.xy = subgroupExclusiveAdd(data[1].i4.xy);
|
||||
data[3].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz);
|
||||
data[3].i4 = subgroupExclusiveAdd(data[3].i4);
|
||||
|
||||
data[0].u4.x = subgroupExclusiveAdd(data[0].u4.x);
|
||||
data[0].u4.xy = subgroupExclusiveAdd(data[1].u4.xy);
|
||||
data[0].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz);
|
||||
data[0].u4 = subgroupExclusiveAdd(data[3].u4);
|
||||
|
||||
data[1].f4.x = subgroupExclusiveMul(data[0].f4.x);
|
||||
data[1].f4.xy = subgroupExclusiveMul(data[1].f4.xy);
|
||||
data[1].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz);
|
||||
data[1].f4 = subgroupExclusiveMul(data[3].f4);
|
||||
|
||||
data[2].i4.x = subgroupExclusiveMul(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupExclusiveMul(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupExclusiveMul(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupExclusiveMul(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupExclusiveMul(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupExclusiveMul(data[3].u4);
|
||||
|
||||
data[0].f4.x = subgroupExclusiveMin(data[0].f4.x);
|
||||
data[0].f4.xy = subgroupExclusiveMin(data[1].f4.xy);
|
||||
data[0].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz);
|
||||
data[0].f4 = subgroupExclusiveMin(data[3].f4);
|
||||
|
||||
data[1].i4.x = subgroupExclusiveMin(data[0].i4.x);
|
||||
data[1].i4.xy = subgroupExclusiveMin(data[1].i4.xy);
|
||||
data[1].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz);
|
||||
data[1].i4 = subgroupExclusiveMin(data[3].i4);
|
||||
|
||||
data[2].u4.x = subgroupExclusiveMin(data[0].u4.x);
|
||||
data[2].u4.xy = subgroupExclusiveMin(data[1].u4.xy);
|
||||
data[2].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz);
|
||||
data[2].u4 = subgroupExclusiveMin(data[3].u4);
|
||||
|
||||
data[3].f4.x = subgroupExclusiveMax(data[0].f4.x);
|
||||
data[3].f4.xy = subgroupExclusiveMax(data[1].f4.xy);
|
||||
data[3].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz);
|
||||
data[3].f4 = subgroupExclusiveMax(data[3].f4);
|
||||
|
||||
data[0].i4.x = subgroupExclusiveMax(data[0].i4.x);
|
||||
data[0].i4.xy = subgroupExclusiveMax(data[1].i4.xy);
|
||||
data[0].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz);
|
||||
data[0].i4 = subgroupExclusiveMax(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupExclusiveMax(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupExclusiveMax(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupExclusiveMax(data[3].u4);
|
||||
|
||||
data[2].i4.x = subgroupExclusiveAnd(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupExclusiveAnd(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupExclusiveAnd(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupExclusiveAnd(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupExclusiveAnd(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupExclusiveAnd(data[3].u4);
|
||||
|
||||
data[0].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0));
|
||||
data[0].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[0].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[0].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[1].i4.x = subgroupExclusiveOr(data[0].i4.x);
|
||||
data[1].i4.xy = subgroupExclusiveOr(data[1].i4.xy);
|
||||
data[1].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz);
|
||||
data[1].i4 = subgroupExclusiveOr(data[3].i4);
|
||||
|
||||
data[2].u4.x = subgroupExclusiveOr(data[0].u4.x);
|
||||
data[2].u4.xy = subgroupExclusiveOr(data[1].u4.xy);
|
||||
data[2].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz);
|
||||
data[2].u4 = subgroupExclusiveOr(data[3].u4);
|
||||
|
||||
data[3].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0));
|
||||
data[3].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[3].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[3].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[0].i4.x = subgroupExclusiveXor(data[0].i4.x);
|
||||
data[0].i4.xy = subgroupExclusiveXor(data[1].i4.xy);
|
||||
data[0].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz);
|
||||
data[0].i4 = subgroupExclusiveXor(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupExclusiveXor(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupExclusiveXor(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupExclusiveXor(data[3].u4);
|
||||
|
||||
data[2].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0));
|
||||
data[2].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[2].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[2].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0))));
|
||||
}
|
75
Test/glsl.es320.subgroupBallot.comp
Normal file
75
Test/glsl.es320.subgroupBallot.comp
Normal file
@ -0,0 +1,75 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_ballot: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
uvec4 relMask = gl_SubgroupEqMask +
|
||||
gl_SubgroupGeMask +
|
||||
gl_SubgroupGtMask +
|
||||
gl_SubgroupLeMask +
|
||||
gl_SubgroupLtMask;
|
||||
|
||||
uvec4 result = subgroupBallot(true);
|
||||
|
||||
data[0].u4.x = subgroupBallotBitCount(result);
|
||||
data[0].u4.y = subgroupBallotBitExtract(result, 0u) ? 1u : 0u;
|
||||
data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
|
||||
data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
|
||||
|
||||
if ((relMask == result) && subgroupInverseBallot(data[0].u4))
|
||||
{
|
||||
data[1].f4.x = subgroupBroadcast(data[0].f4.x, 3u);
|
||||
data[1].f4.xy = subgroupBroadcast(data[1].f4.xy, 3u);
|
||||
data[1].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3u);
|
||||
data[1].f4 = subgroupBroadcast(data[3].f4, 3u);
|
||||
|
||||
data[2].i4.x = subgroupBroadcast(data[0].i4.x, 2u);
|
||||
data[2].i4.xy = subgroupBroadcast(data[1].i4.xy, 2u);
|
||||
data[2].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2u);
|
||||
data[2].i4 = subgroupBroadcast(data[3].i4, 2u);
|
||||
|
||||
data[3].u4.x = subgroupBroadcast(data[0].u4.x, 1u);
|
||||
data[3].u4.xy = subgroupBroadcast(data[1].u4.xy, 1u);
|
||||
data[3].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1u);
|
||||
data[3].u4 = subgroupBroadcast(data[3].u4, 1u);
|
||||
|
||||
data[0].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1u));
|
||||
data[0].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1u));
|
||||
data[0].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
|
||||
data[0].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1u));
|
||||
}
|
||||
else
|
||||
{
|
||||
data[1].f4.x = subgroupBroadcastFirst(data[0].f4.x);
|
||||
data[1].f4.xy = subgroupBroadcastFirst(data[1].f4.xy);
|
||||
data[1].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz);
|
||||
data[1].f4 = subgroupBroadcastFirst(data[3].f4);
|
||||
|
||||
data[2].i4.x = subgroupBroadcastFirst(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupBroadcastFirst(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupBroadcastFirst(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupBroadcastFirst(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupBroadcastFirst(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupBroadcastFirst(data[3].u4);
|
||||
|
||||
data[0].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0));
|
||||
data[0].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[0].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[0].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0))));
|
||||
}
|
||||
}
|
32
Test/glsl.es320.subgroupBallotNeg.comp
Normal file
32
Test/glsl.es320.subgroupBallotNeg.comp
Normal file
@ -0,0 +1,32 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_KHR_shader_subgroup_ballot: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
uvec4 relMask = gl_SubgroupEqMask +
|
||||
gl_SubgroupGeMask +
|
||||
gl_SubgroupGtMask +
|
||||
gl_SubgroupLeMask +
|
||||
gl_SubgroupLtMask;
|
||||
|
||||
uvec4 result = subgroupBallot(true);
|
||||
|
||||
data[0].u4.x = subgroupBallotBitCount(result);
|
||||
data[0].u4.y = subgroupBallotBitExtract(result, 0) ? 1u : 0u;
|
||||
data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
|
||||
data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
|
||||
|
||||
data[1].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
|
||||
}
|
23
Test/glsl.es320.subgroupBasic.comp
Normal file
23
Test/glsl.es320.subgroupBasic.comp
Normal file
@ -0,0 +1,23 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_basic: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffer
|
||||
{
|
||||
int a[];
|
||||
} data;
|
||||
|
||||
void main()
|
||||
{
|
||||
data.a[gl_SubgroupSize] = 1;
|
||||
data.a[gl_SubgroupInvocationID] = 1;
|
||||
data.a[gl_NumSubgroups] = 1;
|
||||
data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0;
|
||||
subgroupBarrier();
|
||||
subgroupMemoryBarrier();
|
||||
subgroupMemoryBarrierBuffer();
|
||||
subgroupMemoryBarrierShared();
|
||||
subgroupMemoryBarrierImage();
|
||||
}
|
122
Test/glsl.es320.subgroupClustered.comp
Normal file
122
Test/glsl.es320.subgroupClustered.comp
Normal file
@ -0,0 +1,122 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_clustered: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
data[0].f4.x = subgroupClusteredAdd(data[0].f4.x, 1u);
|
||||
data[0].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1u);
|
||||
data[0].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1u);
|
||||
data[0].f4 = subgroupClusteredAdd(data[3].f4, 1u);
|
||||
|
||||
data[1].i4.x = subgroupClusteredAdd(data[0].i4.x, 1u);
|
||||
data[1].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1u);
|
||||
data[1].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1u);
|
||||
data[1].i4 = subgroupClusteredAdd(data[3].i4, 1u);
|
||||
|
||||
data[2].u4.x = subgroupClusteredAdd(data[0].u4.x, 1u);
|
||||
data[2].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1u);
|
||||
data[2].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1u);
|
||||
data[2].u4 = subgroupClusteredAdd(data[3].u4, 1u);
|
||||
|
||||
data[3].f4.x = subgroupClusteredMul(data[0].f4.x, 1u);
|
||||
data[3].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1u);
|
||||
data[3].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1u);
|
||||
data[3].f4 = subgroupClusteredMul(data[3].f4, 1u);
|
||||
|
||||
data[0].i4.x = subgroupClusteredMul(data[0].i4.x, 1u);
|
||||
data[0].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1u);
|
||||
data[0].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1u);
|
||||
data[0].i4 = subgroupClusteredMul(data[3].i4, 1u);
|
||||
|
||||
data[1].u4.x = subgroupClusteredMul(data[0].u4.x, 1u);
|
||||
data[1].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1u);
|
||||
data[1].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1u);
|
||||
data[1].u4 = subgroupClusteredMul(data[3].u4, 1u);
|
||||
|
||||
data[2].f4.x = subgroupClusteredMin(data[0].f4.x, 1u);
|
||||
data[2].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1u);
|
||||
data[2].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1u);
|
||||
data[2].f4 = subgroupClusteredMin(data[3].f4, 1u);
|
||||
|
||||
data[3].i4.x = subgroupClusteredMin(data[0].i4.x, 1u);
|
||||
data[3].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1u);
|
||||
data[3].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1u);
|
||||
data[3].i4 = subgroupClusteredMin(data[3].i4, 1u);
|
||||
|
||||
data[0].u4.x = subgroupClusteredMin(data[0].u4.x, 1u);
|
||||
data[0].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1u);
|
||||
data[0].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1u);
|
||||
data[0].u4 = subgroupClusteredMin(data[3].u4, 1u);
|
||||
|
||||
data[1].f4.x = subgroupClusteredMax(data[0].f4.x, 1u);
|
||||
data[1].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1u);
|
||||
data[1].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1u);
|
||||
data[1].f4 = subgroupClusteredMax(data[3].f4, 1u);
|
||||
|
||||
data[2].i4.x = subgroupClusteredMax(data[0].i4.x, 1u);
|
||||
data[2].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1u);
|
||||
data[2].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1u);
|
||||
data[2].i4 = subgroupClusteredMax(data[3].i4, 1u);
|
||||
|
||||
data[3].u4.x = subgroupClusteredMax(data[0].u4.x, 1u);
|
||||
data[3].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1u);
|
||||
data[3].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1u);
|
||||
data[3].u4 = subgroupClusteredMax(data[3].u4, 1u);
|
||||
|
||||
data[0].i4.x = subgroupClusteredAnd(data[0].i4.x, 1u);
|
||||
data[0].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1u);
|
||||
data[0].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1u);
|
||||
data[0].i4 = subgroupClusteredAnd(data[3].i4, 1u);
|
||||
|
||||
data[1].u4.x = subgroupClusteredAnd(data[0].u4.x, 1u);
|
||||
data[1].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1u);
|
||||
data[1].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1u);
|
||||
data[1].u4 = subgroupClusteredAnd(data[3].u4, 1u);
|
||||
|
||||
data[2].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1u));
|
||||
data[2].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1u));
|
||||
data[2].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
|
||||
data[2].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1u));
|
||||
|
||||
data[3].i4.x = subgroupClusteredOr(data[0].i4.x, 1u);
|
||||
data[3].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1u);
|
||||
data[3].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1u);
|
||||
data[3].i4 = subgroupClusteredOr(data[3].i4, 1u);
|
||||
|
||||
data[0].u4.x = subgroupClusteredOr(data[0].u4.x, 1u);
|
||||
data[0].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1u);
|
||||
data[0].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1u);
|
||||
data[0].u4 = subgroupClusteredOr(data[3].u4, 1u);
|
||||
|
||||
data[1].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1u));
|
||||
data[1].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1u));
|
||||
data[1].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
|
||||
data[1].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1u));
|
||||
|
||||
data[2].i4.x = subgroupClusteredXor(data[0].i4.x, 1u);
|
||||
data[2].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1u);
|
||||
data[2].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1u);
|
||||
data[2].i4 = subgroupClusteredXor(data[3].i4, 1u);
|
||||
|
||||
data[3].u4.x = subgroupClusteredXor(data[0].u4.x, 1u);
|
||||
data[3].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1u);
|
||||
data[3].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1u);
|
||||
data[3].u4 = subgroupClusteredXor(data[3].u4, 1u);
|
||||
|
||||
data[0].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1u));
|
||||
data[0].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1u));
|
||||
data[0].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
|
||||
data[0].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1u));
|
||||
}
|
34
Test/glsl.es320.subgroupClusteredNeg.comp
Normal file
34
Test/glsl.es320.subgroupClusteredNeg.comp
Normal file
@ -0,0 +1,34 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_clustered: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
int a = 1;
|
||||
const int aConst = 1;
|
||||
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
data[0].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0u); // ERROR, less than 1
|
||||
|
||||
data[0].f4.x = subgroupClusteredMul(data[0].f4.x, 3u); // ERROR, not a power of 2
|
||||
|
||||
data[1].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8u);
|
||||
data[1].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6u); // ERROR, not a power of 2
|
||||
|
||||
data[3].i4.x = subgroupClusteredOr(data[0].i4.x, uint(a)); // ERROR, not constant
|
||||
data[3].i4.xy = subgroupClusteredOr(data[1].i4.xy, uint(aConst));
|
||||
|
||||
data[0].i4.x = subgroupClusteredXor(data[0].i4.x, uint(1 + a)); // ERROR, not constant
|
||||
data[0].i4.xy = subgroupClusteredXor(data[1].i4.xy, uint(aConst + a)); // ERROR, not constant
|
||||
data[0].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, uint(1 + aConst));
|
||||
}
|
354
Test/glsl.es320.subgroupPartitioned.comp
Normal file
354
Test/glsl.es320.subgroupPartitioned.comp
Normal file
@ -0,0 +1,354 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_NV_shader_subgroup_partitioned: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
uvec4 ballot = subgroupPartitionNV(invocation);
|
||||
|
||||
data[0].u4 = subgroupPartitionNV(data[0].f4.x);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].f4.xy);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].f4.xyz);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].f4);
|
||||
|
||||
data[0].u4 = subgroupPartitionNV(data[0].i4.x);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].i4.xy);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].i4.xyz);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].i4);
|
||||
|
||||
data[0].u4 = subgroupPartitionNV(data[0].u4.x);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].u4.xy);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].u4.xyz);
|
||||
data[0].u4 = subgroupPartitionNV(data[0].u4);
|
||||
|
||||
data[1].u4 = subgroupPartitionNV(bool(data[0].i4.x));
|
||||
data[1].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
|
||||
data[1].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
|
||||
data[1].u4 = subgroupPartitionNV(bvec4(data[0].i4));
|
||||
|
||||
data[1].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot);
|
||||
data[1].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
|
||||
data[1].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
|
||||
data[1].f4 = subgroupPartitionedAddNV(data[3].f4, ballot);
|
||||
|
||||
data[1].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot);
|
||||
data[1].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
|
||||
data[1].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
|
||||
data[1].i4 = subgroupPartitionedAddNV(data[3].i4, ballot);
|
||||
|
||||
data[1].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot);
|
||||
data[1].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
|
||||
data[1].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
|
||||
data[1].u4 = subgroupPartitionedAddNV(data[3].u4, ballot);
|
||||
|
||||
data[2].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot);
|
||||
data[2].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
|
||||
data[2].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
|
||||
data[2].f4 = subgroupPartitionedMulNV(data[3].f4, ballot);
|
||||
|
||||
data[2].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot);
|
||||
data[2].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
|
||||
data[2].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
|
||||
data[2].i4 = subgroupPartitionedMulNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedMulNV(data[3].u4, ballot);
|
||||
|
||||
data[2].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot);
|
||||
data[2].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
|
||||
data[2].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
|
||||
data[2].f4 = subgroupPartitionedMinNV(data[3].f4, ballot);
|
||||
|
||||
data[3].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot);
|
||||
data[3].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
|
||||
data[3].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
|
||||
data[3].i4 = subgroupPartitionedMinNV(data[3].i4, ballot);
|
||||
|
||||
data[3].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot);
|
||||
data[3].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
|
||||
data[3].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
|
||||
data[3].u4 = subgroupPartitionedMinNV(data[3].u4, ballot);
|
||||
|
||||
data[3].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
|
||||
data[3].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
|
||||
data[3].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
|
||||
data[3].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot);
|
||||
|
||||
data[0].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
|
||||
data[0].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
|
||||
data[0].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
|
||||
data[0].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot);
|
||||
|
||||
data[0].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
|
||||
data[0].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
|
||||
data[0].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
|
||||
data[0].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot);
|
||||
|
||||
data[0].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot);
|
||||
data[0].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
|
||||
data[0].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
|
||||
data[0].i4 = subgroupPartitionedAndNV(data[3].i4, ballot);
|
||||
|
||||
data[1].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot);
|
||||
data[1].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
|
||||
data[1].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
|
||||
data[1].u4 = subgroupPartitionedAndNV(data[3].u4, ballot);
|
||||
|
||||
data[1].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
|
||||
data[1].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[1].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[1].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[1].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot);
|
||||
data[1].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
|
||||
data[1].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
|
||||
data[1].i4 = subgroupPartitionedOrNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedOrNV(data[3].u4, ballot);
|
||||
|
||||
data[2].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
|
||||
data[2].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[2].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[2].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[2].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot);
|
||||
data[2].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
|
||||
data[2].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
|
||||
data[2].i4 = subgroupPartitionedXorNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedXorNV(data[3].u4, ballot);
|
||||
|
||||
data[3].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
|
||||
data[3].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[3].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[3].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[3].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
|
||||
data[3].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
|
||||
data[3].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
|
||||
data[3].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
|
||||
|
||||
data[3].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
|
||||
data[3].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
|
||||
data[3].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
|
||||
data[3].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
|
||||
|
||||
data[3].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
|
||||
data[3].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
|
||||
data[3].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
|
||||
data[3].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
|
||||
|
||||
data[3].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
|
||||
data[3].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
|
||||
data[3].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
|
||||
data[3].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
|
||||
|
||||
data[3].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
|
||||
data[3].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
|
||||
data[3].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
|
||||
data[3].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
|
||||
|
||||
data[0].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
|
||||
data[0].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
|
||||
data[0].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
|
||||
data[0].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
|
||||
|
||||
data[0].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
|
||||
data[0].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
|
||||
data[0].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
|
||||
data[0].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
|
||||
|
||||
data[0].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
|
||||
data[0].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
|
||||
data[0].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
|
||||
data[0].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
|
||||
|
||||
data[0].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
|
||||
data[0].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
|
||||
data[0].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
|
||||
data[0].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
|
||||
|
||||
data[1].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
|
||||
data[1].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
|
||||
data[1].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
|
||||
data[1].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
|
||||
|
||||
data[1].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
|
||||
data[1].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
|
||||
data[1].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
|
||||
data[1].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
|
||||
|
||||
data[1].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
|
||||
data[1].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
|
||||
data[1].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
|
||||
data[1].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
|
||||
|
||||
data[1].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
|
||||
data[1].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
|
||||
data[1].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
|
||||
data[1].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
|
||||
|
||||
data[2].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
|
||||
data[2].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[2].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[2].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[2].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
|
||||
data[2].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
|
||||
data[2].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
|
||||
data[2].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
|
||||
|
||||
data[3].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
|
||||
data[3].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[3].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[3].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
|
||||
data[3].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
|
||||
data[3].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
|
||||
data[3].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
|
||||
|
||||
data[3].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
|
||||
data[3].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
|
||||
data[3].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
|
||||
data[3].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
|
||||
|
||||
data[3].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
|
||||
data[3].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[3].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[0].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
|
||||
data[0].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
|
||||
data[0].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
|
||||
data[0].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
|
||||
|
||||
data[0].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
|
||||
data[0].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
|
||||
data[0].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
|
||||
data[0].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
|
||||
|
||||
data[0].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
|
||||
data[0].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
|
||||
data[0].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
|
||||
data[0].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
|
||||
|
||||
data[0].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
|
||||
data[0].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
|
||||
data[0].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
|
||||
data[0].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
|
||||
|
||||
data[1].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
|
||||
data[1].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
|
||||
data[1].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
|
||||
data[1].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
|
||||
|
||||
data[1].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
|
||||
data[1].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
|
||||
data[1].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
|
||||
data[1].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
|
||||
|
||||
data[1].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
|
||||
data[1].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
|
||||
data[1].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
|
||||
data[1].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
|
||||
|
||||
data[1].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
|
||||
data[1].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
|
||||
data[1].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
|
||||
data[1].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
|
||||
|
||||
data[2].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
|
||||
data[2].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
|
||||
data[2].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
|
||||
data[2].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
|
||||
|
||||
data[2].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
|
||||
data[2].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
|
||||
data[2].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
|
||||
data[2].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
|
||||
|
||||
data[2].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
|
||||
data[2].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
|
||||
data[2].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
|
||||
data[2].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
|
||||
|
||||
data[2].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
|
||||
data[2].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
|
||||
data[2].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
|
||||
data[2].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
|
||||
|
||||
data[3].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
|
||||
data[3].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[3].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[3].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
|
||||
data[3].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
|
||||
data[3].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
|
||||
data[3].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
|
||||
|
||||
data[3].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
|
||||
data[3].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
|
||||
data[3].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
|
||||
data[3].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
|
||||
|
||||
data[3].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
|
||||
data[3].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[3].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
|
||||
data[3].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
|
||||
data[3].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
|
||||
data[3].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
|
||||
data[3].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
|
||||
|
||||
data[0].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
|
||||
data[0].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
|
||||
data[0].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
|
||||
data[0].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
|
||||
|
||||
data[0].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
|
||||
data[0].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
|
||||
data[0].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
|
||||
data[0].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
|
||||
}
|
97
Test/glsl.es320.subgroupQuad.comp
Normal file
97
Test/glsl.es320.subgroupQuad.comp
Normal file
@ -0,0 +1,97 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_quad: enable
|
||||
|
||||
layout (local_size_x = 8) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
data[0].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1u);
|
||||
data[0].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1u);
|
||||
data[0].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1u);
|
||||
data[0].f4 = subgroupQuadBroadcast(data[3].f4, 1u);
|
||||
|
||||
data[0].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1u);
|
||||
data[0].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1u);
|
||||
data[0].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1u);
|
||||
data[0].i4 = subgroupQuadBroadcast(data[3].i4, 1u);
|
||||
|
||||
data[0].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1u);
|
||||
data[0].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1u);
|
||||
data[0].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1u);
|
||||
data[0].u4 = subgroupQuadBroadcast(data[3].u4, 1u);
|
||||
|
||||
data[1].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1u));
|
||||
data[1].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1u));
|
||||
data[1].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
|
||||
data[1].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1u));
|
||||
|
||||
data[1].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x);
|
||||
data[1].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy);
|
||||
data[1].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz);
|
||||
data[1].f4 = subgroupQuadSwapHorizontal(data[3].f4);
|
||||
|
||||
data[1].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x);
|
||||
data[1].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy);
|
||||
data[1].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz);
|
||||
data[1].i4 = subgroupQuadSwapHorizontal(data[3].i4);
|
||||
|
||||
data[1].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x);
|
||||
data[1].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy);
|
||||
data[1].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz);
|
||||
data[1].u4 = subgroupQuadSwapHorizontal(data[3].u4);
|
||||
|
||||
data[2].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0));
|
||||
data[2].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[2].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[2].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[2].f4.x = subgroupQuadSwapVertical(data[0].f4.x);
|
||||
data[2].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy);
|
||||
data[2].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz);
|
||||
data[2].f4 = subgroupQuadSwapVertical(data[3].f4);
|
||||
|
||||
data[2].i4.x = subgroupQuadSwapVertical(data[0].i4.x);
|
||||
data[2].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy);
|
||||
data[2].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz);
|
||||
data[2].i4 = subgroupQuadSwapVertical(data[3].i4);
|
||||
|
||||
data[2].u4.x = subgroupQuadSwapVertical(data[0].u4.x);
|
||||
data[2].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy);
|
||||
data[2].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz);
|
||||
data[2].u4 = subgroupQuadSwapVertical(data[3].u4);
|
||||
|
||||
data[3].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0));
|
||||
data[3].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[3].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[3].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0))));
|
||||
|
||||
data[3].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x);
|
||||
data[3].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy);
|
||||
data[3].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz);
|
||||
data[3].f4 = subgroupQuadSwapDiagonal(data[3].f4);
|
||||
|
||||
data[3].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x);
|
||||
data[3].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy);
|
||||
data[3].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz);
|
||||
data[3].i4 = subgroupQuadSwapDiagonal(data[3].i4);
|
||||
|
||||
data[3].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x);
|
||||
data[3].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy);
|
||||
data[3].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz);
|
||||
data[3].u4 = subgroupQuadSwapDiagonal(data[3].u4);
|
||||
|
||||
data[3].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0));
|
||||
data[3].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0))));
|
||||
data[3].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0))));
|
||||
data[3].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0))));
|
||||
}
|
57
Test/glsl.es320.subgroupShuffle.comp
Normal file
57
Test/glsl.es320.subgroupShuffle.comp
Normal file
@ -0,0 +1,57 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_shuffle: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
data[0].f4.x = subgroupShuffle(data[0].f4.x, invocation);
|
||||
data[0].f4.xy = subgroupShuffle(data[1].f4.xy, invocation);
|
||||
data[0].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation);
|
||||
data[0].f4 = subgroupShuffle(data[3].f4, invocation);
|
||||
|
||||
data[0].i4.x = subgroupShuffle(data[0].i4.x, invocation);
|
||||
data[0].i4.xy = subgroupShuffle(data[1].i4.xy, invocation);
|
||||
data[0].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation);
|
||||
data[0].i4 = subgroupShuffle(data[3].i4, invocation);
|
||||
|
||||
data[1].u4.x = subgroupShuffle(data[0].u4.x, invocation);
|
||||
data[1].u4.xy = subgroupShuffle(data[1].u4.xy, invocation);
|
||||
data[1].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation);
|
||||
data[1].u4 = subgroupShuffle(data[3].u4, invocation);
|
||||
|
||||
data[1].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation));
|
||||
data[1].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[1].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[1].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
|
||||
data[2].f4.x = subgroupShuffleXor(data[0].f4.x, invocation);
|
||||
data[2].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation);
|
||||
data[2].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation);
|
||||
data[2].f4 = subgroupShuffleXor(data[3].f4, invocation);
|
||||
|
||||
data[2].i4.x = subgroupShuffleXor(data[0].i4.x, invocation);
|
||||
data[2].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation);
|
||||
data[2].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation);
|
||||
data[2].i4 = subgroupShuffleXor(data[3].i4, invocation);
|
||||
|
||||
data[3].u4.x = subgroupShuffleXor(data[0].u4.x, invocation);
|
||||
data[3].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation);
|
||||
data[3].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation);
|
||||
data[3].u4 = subgroupShuffleXor(data[3].u4, invocation);
|
||||
|
||||
data[3].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation));
|
||||
data[3].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[3].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[3].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
}
|
57
Test/glsl.es320.subgroupShuffleRelative.comp
Normal file
57
Test/glsl.es320.subgroupShuffleRelative.comp
Normal file
@ -0,0 +1,57 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_shuffle_relative: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
data[0].f4.x = subgroupShuffleUp(data[0].f4.x, invocation);
|
||||
data[0].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation);
|
||||
data[0].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation);
|
||||
data[0].f4 = subgroupShuffleUp(data[3].f4, invocation);
|
||||
|
||||
data[0].i4.x = subgroupShuffleUp(data[0].i4.x, invocation);
|
||||
data[0].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation);
|
||||
data[0].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation);
|
||||
data[0].i4 = subgroupShuffleUp(data[3].i4, invocation);
|
||||
|
||||
data[1].u4.x = subgroupShuffleUp(data[0].u4.x, invocation);
|
||||
data[1].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation);
|
||||
data[1].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation);
|
||||
data[1].u4 = subgroupShuffleUp(data[3].u4, invocation);
|
||||
|
||||
data[1].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation));
|
||||
data[1].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[1].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[1].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
|
||||
data[2].f4.x = subgroupShuffleDown(data[0].f4.x, invocation);
|
||||
data[2].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation);
|
||||
data[2].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation);
|
||||
data[2].f4 = subgroupShuffleDown(data[3].f4, invocation);
|
||||
|
||||
data[2].i4.x = subgroupShuffleDown(data[0].i4.x, invocation);
|
||||
data[2].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation);
|
||||
data[2].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation);
|
||||
data[2].i4 = subgroupShuffleDown(data[3].i4, invocation);
|
||||
|
||||
data[3].u4.x = subgroupShuffleDown(data[0].u4.x, invocation);
|
||||
data[3].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation);
|
||||
data[3].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation);
|
||||
data[3].u4 = subgroupShuffleDown(data[3].u4, invocation);
|
||||
|
||||
data[3].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation));
|
||||
data[3].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation));
|
||||
data[3].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
|
||||
data[3].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation));
|
||||
}
|
43
Test/glsl.es320.subgroupVote.comp
Normal file
43
Test/glsl.es320.subgroupVote.comp
Normal file
@ -0,0 +1,43 @@
|
||||
#version 320 es
|
||||
|
||||
#extension GL_KHR_shader_subgroup_vote: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
vec4 f4;
|
||||
ivec4 i4;
|
||||
uvec4 u4;
|
||||
int r;
|
||||
} data[4];
|
||||
|
||||
void main()
|
||||
{
|
||||
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
|
||||
|
||||
if (subgroupAll(data[0].r < 0))
|
||||
{
|
||||
data[0].r = int(subgroupAllEqual(data[0].f4.x));
|
||||
data[0].r = int(subgroupAllEqual(data[1].f4.xy));
|
||||
data[0].r = int(subgroupAllEqual(data[2].f4.xyz));
|
||||
data[0].r = int(subgroupAllEqual(data[3].f4));
|
||||
|
||||
data[0].r = int(subgroupAllEqual(data[0].i4.x));
|
||||
data[0].r = int(subgroupAllEqual(data[1].i4.xy));
|
||||
data[0].r = int(subgroupAllEqual(data[2].i4.xyz));
|
||||
data[0].r = int(subgroupAllEqual(data[3].i4));
|
||||
|
||||
data[0].r = int(subgroupAllEqual(data[0].u4.x));
|
||||
data[0].r = int(subgroupAllEqual(data[1].u4.xy));
|
||||
data[0].r = int(subgroupAllEqual(data[2].u4.xyz));
|
||||
data[0].r = int(subgroupAllEqual(data[3].u4));
|
||||
}
|
||||
else if (subgroupAny(data[1].r < 0))
|
||||
{
|
||||
data[1].r = int(int(subgroupAllEqual(data[0].i4.x < 0)));
|
||||
data[1].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0)))));
|
||||
data[1].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0)))));
|
||||
data[1].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0)))));
|
||||
}
|
||||
}
|
@ -1873,7 +1873,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
commonBuiltins.append(
|
||||
"void subgroupBarrier();"
|
||||
"void subgroupMemoryBarrier();"
|
||||
@ -6126,7 +6127,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
const char* ballotDecls =
|
||||
"in mediump uint gl_SubgroupSize;"
|
||||
"in mediump uint gl_SubgroupInvocationID;"
|
||||
@ -8160,7 +8162,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
|
||||
@ -8479,7 +8482,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
|
||||
@ -8663,7 +8667,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
|
||||
@ -8690,7 +8695,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
|
||||
@ -8859,7 +8865,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
@ -8948,7 +8955,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
@ -9365,7 +9373,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
}
|
||||
|
||||
// GL_KHR_shader_subgroup
|
||||
if (spvVersion.vulkan > 0) {
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 140)) {
|
||||
symbolTable.relateToOperator("subgroupBarrier", EOpSubgroupBarrier);
|
||||
symbolTable.relateToOperator("subgroupMemoryBarrier", EOpSubgroupMemoryBarrier);
|
||||
symbolTable.relateToOperator("subgroupMemoryBarrierBuffer", EOpSubgroupMemoryBarrierBuffer);
|
||||
|
@ -236,7 +236,39 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"precise_struct_block.vert",
|
||||
"maxClipDistances.vert",
|
||||
"findFunction.frag",
|
||||
"constantUnaryConversion.comp"
|
||||
"constantUnaryConversion.comp",
|
||||
"glsl.450.subgroup.frag",
|
||||
"glsl.450.subgroup.geom",
|
||||
"glsl.450.subgroup.tesc",
|
||||
"glsl.450.subgroup.tese",
|
||||
"glsl.450.subgroup.vert",
|
||||
"glsl.450.subgroupArithmetic.comp",
|
||||
"glsl.450.subgroupBasic.comp",
|
||||
"glsl.450.subgroupBallot.comp",
|
||||
"glsl.450.subgroupBallotNeg.comp",
|
||||
"glsl.450.subgroupClustered.comp",
|
||||
"glsl.450.subgroupClusteredNeg.comp",
|
||||
"glsl.450.subgroupPartitioned.comp",
|
||||
"glsl.450.subgroupShuffle.comp",
|
||||
"glsl.450.subgroupShuffleRelative.comp",
|
||||
"glsl.450.subgroupQuad.comp",
|
||||
"glsl.450.subgroupVote.comp",
|
||||
"glsl.es320.subgroup.frag",
|
||||
"glsl.es320.subgroup.geom",
|
||||
"glsl.es320.subgroup.tesc",
|
||||
"glsl.es320.subgroup.tese",
|
||||
"glsl.es320.subgroup.vert",
|
||||
"glsl.es320.subgroupArithmetic.comp",
|
||||
"glsl.es320.subgroupBasic.comp",
|
||||
"glsl.es320.subgroupBallot.comp",
|
||||
"glsl.es320.subgroupBallotNeg.comp",
|
||||
"glsl.es320.subgroupClustered.comp",
|
||||
"glsl.es320.subgroupClusteredNeg.comp",
|
||||
"glsl.es320.subgroupPartitioned.comp",
|
||||
"glsl.es320.subgroupShuffle.comp",
|
||||
"glsl.es320.subgroupShuffleRelative.comp",
|
||||
"glsl.es320.subgroupQuad.comp",
|
||||
"glsl.es320.subgroupVote.comp",
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user