diff --git a/Test/baseResults/glsl.460.subgroup.mesh.out b/Test/baseResults/glsl.460.subgroup.mesh.out new file mode 100644 index 00000000..86ce93fc --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.mesh.out @@ -0,0 +1,1259 @@ +glsl.460.subgroup.mesh +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + +Shader version: 460 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_mesh_shader +Requested GL_NV_shader_subgroup_partitioned +max_vertices = 81 +max_primitives = 32 +output primitive = triangles +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:14 'gl_SubgroupID' ( in uint unknown built-in variable) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:120 Function Definition: main( ( global void) +0:120 Function Parameters: +0:122 Sequence +0:122 Sequence +0:122 move second child to first child ( temp uint) +0:122 'iid' ( temp uint) +0:122 direct index ( temp uint) +0:122 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:122 Constant: +0:122 0 (const int) +0:123 Sequence +0:123 move second child to first child ( temp uint) +0:123 'gid' ( temp uint) +0:123 direct index ( temp uint) +0:123 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:123 Constant: +0:123 0 (const int) +0:125 move second child to first child ( temp 4-component vector of float) +0:125 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:125 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:125 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:125 'iid' ( temp uint) +0:125 Constant: +0:125 0 (const int) +0:125 Constant: +0:125 1.000000 +0:125 1.000000 +0:125 1.000000 +0:125 1.000000 +0:126 move second child to first child ( temp float) +0:126 gl_PointSize: direct index for structure ( out float PointSize) +0:126 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:126 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 1 (const int) +0:126 Constant: +0:126 2.000000 +0:127 move second child to first child ( temp float) +0:127 direct index ( temp float ClipDistance) +0:127 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:127 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:127 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 2 (const int) +0:127 Constant: +0:127 3 (const int) +0:127 Constant: +0:127 3.000000 +0:128 move second child to first child ( temp float) +0:128 direct index ( temp float CullDistance) +0:128 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:128 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:128 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 3 (const int) +0:128 Constant: +0:128 2 (const int) +0:128 Constant: +0:128 4.000000 +0:130 MemoryBarrierShared ( global void) +0:130 Barrier ( global void) +0:132 move second child to first child ( temp 4-component vector of float) +0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:132 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 add ( temp uint) +0:132 'iid' ( temp uint) +0:132 Constant: +0:132 1 (const uint) +0:132 Constant: +0:132 0 (const int) +0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:132 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 'iid' ( temp uint) +0:132 Constant: +0:132 0 (const int) +0:133 move second child to first child ( temp float) +0:133 gl_PointSize: direct index for structure ( out float PointSize) +0:133 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 add ( temp uint) +0:133 'iid' ( temp uint) +0:133 Constant: +0:133 1 (const uint) +0:133 Constant: +0:133 1 (const int) +0:133 gl_PointSize: direct index for structure ( out float PointSize) +0:133 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 'iid' ( temp uint) +0:133 Constant: +0:133 1 (const int) +0:134 move second child to first child ( temp float) +0:134 direct index ( temp float ClipDistance) +0:134 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:134 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 add ( temp uint) +0:134 'iid' ( temp uint) +0:134 Constant: +0:134 1 (const uint) +0:134 Constant: +0:134 2 (const int) +0:134 Constant: +0:134 3 (const int) +0:134 direct index ( temp float ClipDistance) +0:134 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:134 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 'iid' ( temp uint) +0:134 Constant: +0:134 2 (const int) +0:134 Constant: +0:134 3 (const int) +0:135 move second child to first child ( temp float) +0:135 direct index ( temp float CullDistance) +0:135 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:135 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 add ( temp uint) +0:135 'iid' ( temp uint) +0:135 Constant: +0:135 1 (const uint) +0:135 Constant: +0:135 3 (const int) +0:135 Constant: +0:135 2 (const int) +0:135 direct index ( temp float CullDistance) +0:135 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:135 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 'iid' ( temp uint) +0:135 Constant: +0:135 3 (const int) +0:135 Constant: +0:135 2 (const int) +0:137 MemoryBarrierShared ( global void) +0:137 Barrier ( global void) +0:139 move second child to first child ( temp int) +0:139 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:139 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:139 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:139 'iid' ( temp uint) +0:139 Constant: +0:139 0 (const int) +0:139 Constant: +0:139 6 (const int) +0:140 move second child to first child ( temp int) +0:140 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:140 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:140 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:140 'iid' ( temp uint) +0:140 Constant: +0:140 1 (const int) +0:140 Constant: +0:140 7 (const int) +0:141 move second child to first child ( temp int) +0:141 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:141 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:141 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:141 'iid' ( temp uint) +0:141 Constant: +0:141 2 (const int) +0:141 Constant: +0:141 8 (const int) +0:142 move second child to first child ( temp int) +0:142 direct index ( perprimitiveNV temp int ViewportMaskNV) +0:142 gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV) +0:142 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:142 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:142 'iid' ( temp uint) +0:142 Constant: +0:142 3 (const int) +0:142 Constant: +0:142 0 (const int) +0:142 Constant: +0:142 9 (const int) +0:144 MemoryBarrierShared ( global void) +0:144 Barrier ( global void) +0:146 move second child to first child ( temp int) +0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:146 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 add ( temp uint) +0:146 'iid' ( temp uint) +0:146 Constant: +0:146 1 (const uint) +0:146 Constant: +0:146 0 (const int) +0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:146 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 'iid' ( temp uint) +0:146 Constant: +0:146 0 (const int) +0:147 move second child to first child ( temp int) +0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:147 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 add ( temp uint) +0:147 'iid' ( temp uint) +0:147 Constant: +0:147 1 (const uint) +0:147 Constant: +0:147 1 (const int) +0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:147 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 'iid' ( temp uint) +0:147 Constant: +0:147 1 (const int) +0:148 move second child to first child ( temp int) +0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:148 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 add ( temp uint) +0:148 'iid' ( temp uint) +0:148 Constant: +0:148 1 (const uint) +0:148 Constant: +0:148 2 (const int) +0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:148 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 'iid' ( temp uint) +0:148 Constant: +0:148 2 (const int) +0:149 move second child to first child ( temp int) +0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) +0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV) +0:149 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 add ( temp uint) +0:149 'iid' ( temp uint) +0:149 Constant: +0:149 1 (const uint) +0:149 Constant: +0:149 3 (const int) +0:149 Constant: +0:149 0 (const int) +0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) +0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV) +0:149 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 'iid' ( temp uint) +0:149 Constant: +0:149 3 (const int) +0:149 Constant: +0:149 0 (const int) +0:151 MemoryBarrierShared ( global void) +0:151 Barrier ( global void) +0:154 move second child to first child ( temp uint) +0:154 direct index ( temp uint PrimitiveIndicesNV) +0:154 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:154 Constant: +0:154 0 (const int) +0:154 Constant: +0:154 257 (const uint) +0:155 move second child to first child ( temp uint) +0:155 direct index ( temp uint PrimitiveIndicesNV) +0:155 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:155 Constant: +0:155 95 (const int) +0:155 Constant: +0:155 2 (const uint) +0:156 move second child to first child ( temp uint) +0:156 indirect index ( temp uint PrimitiveIndicesNV) +0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:156 'gid' ( temp uint) +0:156 indirect index ( temp uint PrimitiveIndicesNV) +0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:156 subtract ( temp uint) +0:156 'gid' ( temp uint) +0:156 Constant: +0:156 1 (const uint) +0:159 writePackedPrimitiveIndices4x8NV ( global void) +0:159 Convert int to uint ( temp uint) +0:159 'gl_DrawID' ( in int DrawId) +0:159 Constant: +0:159 16909060 (const uint) +0:161 move second child to first child ( temp uint) +0:161 'gl_PrimitiveCountNV' ( out uint PrimitiveCountNV) +0:161 Constant: +0:161 96 (const uint) +0:163 MemoryBarrierShared ( global void) +0:163 Barrier ( global void) +0:167 Function Definition: basic_works( ( global void) +0:167 Function Parameters: +0:169 Sequence +0:169 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:170 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:171 subgroupBarrier ( global void) +0:172 subgroupMemoryBarrier ( global void) +0:173 subgroupMemoryBarrierBuffer ( global void) +0:174 subgroupMemoryBarrierImage ( global void) +0:175 subgroupElect ( global bool) +0:176 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:177 'gl_SubgroupID' ( in uint unknown built-in variable) +0:178 subgroupMemoryBarrierShared ( global void) +0:182 Function Definition: ballot_works(vf4; ( global void) +0:182 Function Parameters: +0:182 'f4' ( in 4-component vector of float) +0:183 Sequence +0:183 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:184 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:185 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:186 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:187 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:188 subgroupBroadcast ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:188 Constant: +0:188 0 (const uint) +0:189 subgroupBroadcastFirst ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:190 Sequence +0:190 move second child to first child ( temp 4-component vector of uint) +0:190 'ballot' ( temp 4-component vector of uint) +0:190 subgroupBallot ( global 4-component vector of uint) +0:190 Constant: +0:190 false (const bool) +0:191 subgroupInverseBallot ( global bool) +0:191 Constant: +0:191 1 (const uint) +0:191 1 (const uint) +0:191 1 (const uint) +0:191 1 (const uint) +0:192 subgroupBallotBitExtract ( global bool) +0:192 'ballot' ( temp 4-component vector of uint) +0:192 Constant: +0:192 0 (const uint) +0:193 subgroupBallotBitCount ( global uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:194 subgroupBallotInclusiveBitCount ( global uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:195 subgroupBallotExclusiveBitCount ( global uint) +0:195 'ballot' ( temp 4-component vector of uint) +0:196 subgroupBallotFindLSB ( global uint) +0:196 'ballot' ( temp 4-component vector of uint) +0:197 subgroupBallotFindMSB ( global uint) +0:197 'ballot' ( temp 4-component vector of uint) +0:201 Function Definition: vote_works(vf4; ( global void) +0:201 Function Parameters: +0:201 'f4' ( in 4-component vector of float) +0:203 Sequence +0:203 subgroupAll ( global bool) +0:203 Constant: +0:203 true (const bool) +0:204 subgroupAny ( global bool) +0:204 Constant: +0:204 false (const bool) +0:205 subgroupAllEqual ( global bool) +0:205 'f4' ( in 4-component vector of float) +0:210 Function Definition: shuffle_works(vf4; ( global void) +0:210 Function Parameters: +0:210 'f4' ( in 4-component vector of float) +0:212 Sequence +0:212 subgroupShuffle ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 Constant: +0:212 0 (const uint) +0:213 subgroupShuffleXor ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 Constant: +0:213 1 (const uint) +0:214 subgroupShuffleUp ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 Constant: +0:214 1 (const uint) +0:215 subgroupShuffleDown ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:215 Constant: +0:215 1 (const uint) +0:219 Function Definition: arith_works(vf4; ( global void) +0:219 Function Parameters: +0:219 'f4' ( in 4-component vector of float) +0:? Sequence +0:222 subgroupAdd ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:223 subgroupMul ( global 4-component vector of float) +0:223 'f4' ( in 4-component vector of float) +0:224 subgroupMin ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) +0:225 subgroupMax ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:226 subgroupAnd ( global 4-component vector of uint) +0:226 'ballot' ( temp 4-component vector of uint) +0:227 subgroupOr ( global 4-component vector of uint) +0:227 'ballot' ( temp 4-component vector of uint) +0:228 subgroupXor ( global 4-component vector of uint) +0:228 'ballot' ( temp 4-component vector of uint) +0:229 subgroupInclusiveAdd ( global 4-component vector of float) +0:229 'f4' ( in 4-component vector of float) +0:230 subgroupInclusiveMul ( global 4-component vector of float) +0:230 'f4' ( in 4-component vector of float) +0:231 subgroupInclusiveMin ( global 4-component vector of float) +0:231 'f4' ( in 4-component vector of float) +0:232 subgroupInclusiveMax ( global 4-component vector of float) +0:232 'f4' ( in 4-component vector of float) +0:233 subgroupInclusiveAnd ( global 4-component vector of uint) +0:233 'ballot' ( temp 4-component vector of uint) +0:234 subgroupInclusiveOr ( global 4-component vector of uint) +0:234 'ballot' ( temp 4-component vector of uint) +0:235 subgroupInclusiveXor ( global 4-component vector of uint) +0:235 'ballot' ( temp 4-component vector of uint) +0:236 subgroupExclusiveAdd ( global 4-component vector of float) +0:236 'f4' ( in 4-component vector of float) +0:237 subgroupExclusiveMul ( global 4-component vector of float) +0:237 'f4' ( in 4-component vector of float) +0:238 subgroupExclusiveMin ( global 4-component vector of float) +0:238 'f4' ( in 4-component vector of float) +0:239 subgroupExclusiveMax ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:240 subgroupExclusiveAnd ( global 4-component vector of uint) +0:240 'ballot' ( temp 4-component vector of uint) +0:241 subgroupExclusiveOr ( global 4-component vector of uint) +0:241 'ballot' ( temp 4-component vector of uint) +0:242 subgroupExclusiveXor ( global 4-component vector of uint) +0:242 'ballot' ( temp 4-component vector of uint) +0:246 Function Definition: clustered_works(vf4; ( global void) +0:246 Function Parameters: +0:246 'f4' ( in 4-component vector of float) +0:248 Sequence +0:248 Sequence +0:248 move second child to first child ( temp 4-component vector of uint) +0:248 'ballot' ( temp 4-component vector of uint) +0:248 Constant: +0:248 85 (const uint) +0:248 0 (const uint) +0:248 0 (const uint) +0:248 0 (const uint) +0:249 subgroupClusteredAdd ( global 4-component vector of float) +0:249 'f4' ( in 4-component vector of float) +0:249 Constant: +0:249 2 (const uint) +0:250 subgroupClusteredMul ( global 4-component vector of float) +0:250 'f4' ( in 4-component vector of float) +0:250 Constant: +0:250 2 (const uint) +0:251 subgroupClusteredMin ( global 4-component vector of float) +0:251 'f4' ( in 4-component vector of float) +0:251 Constant: +0:251 2 (const uint) +0:252 subgroupClusteredMax ( global 4-component vector of float) +0:252 'f4' ( in 4-component vector of float) +0:252 Constant: +0:252 2 (const uint) +0:253 subgroupClusteredAnd ( global 4-component vector of uint) +0:253 'ballot' ( temp 4-component vector of uint) +0:253 Constant: +0:253 2 (const uint) +0:254 subgroupClusteredOr ( global 4-component vector of uint) +0:254 'ballot' ( temp 4-component vector of uint) +0:254 Constant: +0:254 2 (const uint) +0:255 subgroupClusteredXor ( global 4-component vector of uint) +0:255 'ballot' ( temp 4-component vector of uint) +0:255 Constant: +0:255 2 (const uint) +0:259 Function Definition: quad_works(vf4; ( global void) +0:259 Function Parameters: +0:259 'f4' ( in 4-component vector of float) +0:261 Sequence +0:261 subgroupQuadBroadcast ( global 4-component vector of float) +0:261 'f4' ( in 4-component vector of float) +0:261 Constant: +0:261 0 (const uint) +0:262 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:262 'f4' ( in 4-component vector of float) +0:263 subgroupQuadSwapVertical ( global 4-component vector of float) +0:263 'f4' ( in 4-component vector of float) +0:264 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:264 'f4' ( in 4-component vector of float) +0:268 Function Definition: partitioned_works(vf4; ( global void) +0:268 Function Parameters: +0:268 'f4' ( in 4-component vector of float) +0:270 Sequence +0:270 Sequence +0:270 move second child to first child ( temp 4-component vector of uint) +0:270 'parti' ( temp 4-component vector of uint) +0:270 subgroupPartitionNV ( global 4-component vector of uint) +0:270 'f4' ( in 4-component vector of float) +0:271 Sequence +0:271 move second child to first child ( temp 4-component vector of uint) +0:271 'ballot' ( temp 4-component vector of uint) +0:271 Constant: +0:271 85 (const uint) +0:271 0 (const uint) +0:271 0 (const uint) +0:271 0 (const uint) +0:272 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:272 'f4' ( in 4-component vector of float) +0:272 'parti' ( temp 4-component vector of uint) +0:273 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:273 'f4' ( in 4-component vector of float) +0:273 'parti' ( temp 4-component vector of uint) +0:274 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:274 'f4' ( in 4-component vector of float) +0:274 'parti' ( temp 4-component vector of uint) +0:275 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:275 'f4' ( in 4-component vector of float) +0:275 'parti' ( temp 4-component vector of uint) +0:276 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:276 'ballot' ( temp 4-component vector of uint) +0:276 'parti' ( temp 4-component vector of uint) +0:277 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:277 'ballot' ( temp 4-component vector of uint) +0:277 'parti' ( temp 4-component vector of uint) +0:278 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:278 'ballot' ( temp 4-component vector of uint) +0:278 'parti' ( temp 4-component vector of uint) +0:279 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:279 'f4' ( in 4-component vector of float) +0:279 'parti' ( temp 4-component vector of uint) +0:280 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:280 'f4' ( in 4-component vector of float) +0:280 'parti' ( temp 4-component vector of uint) +0:281 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:281 'f4' ( in 4-component vector of float) +0:281 'parti' ( temp 4-component vector of uint) +0:282 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:282 'f4' ( in 4-component vector of float) +0:282 'parti' ( temp 4-component vector of uint) +0:283 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:283 'ballot' ( temp 4-component vector of uint) +0:283 'parti' ( temp 4-component vector of uint) +0:284 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:284 'ballot' ( temp 4-component vector of uint) +0:284 'parti' ( temp 4-component vector of uint) +0:285 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:285 'ballot' ( temp 4-component vector of uint) +0:285 'parti' ( temp 4-component vector of uint) +0:286 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:286 'f4' ( in 4-component vector of float) +0:286 'parti' ( temp 4-component vector of uint) +0:287 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:287 'f4' ( in 4-component vector of float) +0:287 'parti' ( temp 4-component vector of uint) +0:288 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:288 'f4' ( in 4-component vector of float) +0:288 'parti' ( temp 4-component vector of uint) +0:289 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:289 'f4' ( in 4-component vector of float) +0:289 'parti' ( temp 4-component vector of uint) +0:290 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:290 'ballot' ( temp 4-component vector of uint) +0:290 'parti' ( temp 4-component vector of uint) +0:291 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:291 'ballot' ( temp 4-component vector of uint) +0:291 'parti' ( temp 4-component vector of uint) +0:292 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:292 'ballot' ( temp 4-component vector of uint) +0:292 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:? 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:? 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) + + +Linked mesh stage: + + +Shader version: 460 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_mesh_shader +Requested GL_NV_shader_subgroup_partitioned +max_vertices = 81 +max_primitives = 32 +output primitive = triangles +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:120 Function Definition: main( ( global void) +0:120 Function Parameters: +0:122 Sequence +0:122 Sequence +0:122 move second child to first child ( temp uint) +0:122 'iid' ( temp uint) +0:122 direct index ( temp uint) +0:122 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:122 Constant: +0:122 0 (const int) +0:123 Sequence +0:123 move second child to first child ( temp uint) +0:123 'gid' ( temp uint) +0:123 direct index ( temp uint) +0:123 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:123 Constant: +0:123 0 (const int) +0:125 move second child to first child ( temp 4-component vector of float) +0:125 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:125 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:125 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:125 'iid' ( temp uint) +0:125 Constant: +0:125 0 (const int) +0:125 Constant: +0:125 1.000000 +0:125 1.000000 +0:125 1.000000 +0:125 1.000000 +0:126 move second child to first child ( temp float) +0:126 gl_PointSize: direct index for structure ( out float PointSize) +0:126 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:126 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 1 (const int) +0:126 Constant: +0:126 2.000000 +0:127 move second child to first child ( temp float) +0:127 direct index ( temp float ClipDistance) +0:127 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:127 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:127 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 2 (const int) +0:127 Constant: +0:127 3 (const int) +0:127 Constant: +0:127 3.000000 +0:128 move second child to first child ( temp float) +0:128 direct index ( temp float CullDistance) +0:128 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:128 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:128 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 3 (const int) +0:128 Constant: +0:128 2 (const int) +0:128 Constant: +0:128 4.000000 +0:130 MemoryBarrierShared ( global void) +0:130 Barrier ( global void) +0:132 move second child to first child ( temp 4-component vector of float) +0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:132 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 add ( temp uint) +0:132 'iid' ( temp uint) +0:132 Constant: +0:132 1 (const uint) +0:132 Constant: +0:132 0 (const int) +0:132 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:132 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:132 'iid' ( temp uint) +0:132 Constant: +0:132 0 (const int) +0:133 move second child to first child ( temp float) +0:133 gl_PointSize: direct index for structure ( out float PointSize) +0:133 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 add ( temp uint) +0:133 'iid' ( temp uint) +0:133 Constant: +0:133 1 (const uint) +0:133 Constant: +0:133 1 (const int) +0:133 gl_PointSize: direct index for structure ( out float PointSize) +0:133 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:133 'iid' ( temp uint) +0:133 Constant: +0:133 1 (const int) +0:134 move second child to first child ( temp float) +0:134 direct index ( temp float ClipDistance) +0:134 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:134 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 add ( temp uint) +0:134 'iid' ( temp uint) +0:134 Constant: +0:134 1 (const uint) +0:134 Constant: +0:134 2 (const int) +0:134 Constant: +0:134 3 (const int) +0:134 direct index ( temp float ClipDistance) +0:134 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:134 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:134 'iid' ( temp uint) +0:134 Constant: +0:134 2 (const int) +0:134 Constant: +0:134 3 (const int) +0:135 move second child to first child ( temp float) +0:135 direct index ( temp float CullDistance) +0:135 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:135 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 add ( temp uint) +0:135 'iid' ( temp uint) +0:135 Constant: +0:135 1 (const uint) +0:135 Constant: +0:135 3 (const int) +0:135 Constant: +0:135 2 (const int) +0:135 direct index ( temp float CullDistance) +0:135 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:135 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:135 'iid' ( temp uint) +0:135 Constant: +0:135 3 (const int) +0:135 Constant: +0:135 2 (const int) +0:137 MemoryBarrierShared ( global void) +0:137 Barrier ( global void) +0:139 move second child to first child ( temp int) +0:139 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:139 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:139 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:139 'iid' ( temp uint) +0:139 Constant: +0:139 0 (const int) +0:139 Constant: +0:139 6 (const int) +0:140 move second child to first child ( temp int) +0:140 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:140 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:140 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:140 'iid' ( temp uint) +0:140 Constant: +0:140 1 (const int) +0:140 Constant: +0:140 7 (const int) +0:141 move second child to first child ( temp int) +0:141 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:141 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:141 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:141 'iid' ( temp uint) +0:141 Constant: +0:141 2 (const int) +0:141 Constant: +0:141 8 (const int) +0:142 move second child to first child ( temp int) +0:142 direct index ( perprimitiveNV temp int ViewportMaskNV) +0:142 gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV) +0:142 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:142 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:142 'iid' ( temp uint) +0:142 Constant: +0:142 3 (const int) +0:142 Constant: +0:142 0 (const int) +0:142 Constant: +0:142 9 (const int) +0:144 MemoryBarrierShared ( global void) +0:144 Barrier ( global void) +0:146 move second child to first child ( temp int) +0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:146 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 add ( temp uint) +0:146 'iid' ( temp uint) +0:146 Constant: +0:146 1 (const uint) +0:146 Constant: +0:146 0 (const int) +0:146 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:146 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:146 'iid' ( temp uint) +0:146 Constant: +0:146 0 (const int) +0:147 move second child to first child ( temp int) +0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:147 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 add ( temp uint) +0:147 'iid' ( temp uint) +0:147 Constant: +0:147 1 (const uint) +0:147 Constant: +0:147 1 (const int) +0:147 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:147 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:147 'iid' ( temp uint) +0:147 Constant: +0:147 1 (const int) +0:148 move second child to first child ( temp int) +0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:148 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 add ( temp uint) +0:148 'iid' ( temp uint) +0:148 Constant: +0:148 1 (const uint) +0:148 Constant: +0:148 2 (const int) +0:148 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:148 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:148 'iid' ( temp uint) +0:148 Constant: +0:148 2 (const int) +0:149 move second child to first child ( temp int) +0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) +0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV) +0:149 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 add ( temp uint) +0:149 'iid' ( temp uint) +0:149 Constant: +0:149 1 (const uint) +0:149 Constant: +0:149 3 (const int) +0:149 Constant: +0:149 0 (const int) +0:149 direct index ( perprimitiveNV temp int ViewportMaskNV) +0:149 gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV) +0:149 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:149 'iid' ( temp uint) +0:149 Constant: +0:149 3 (const int) +0:149 Constant: +0:149 0 (const int) +0:151 MemoryBarrierShared ( global void) +0:151 Barrier ( global void) +0:154 move second child to first child ( temp uint) +0:154 direct index ( temp uint PrimitiveIndicesNV) +0:154 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:154 Constant: +0:154 0 (const int) +0:154 Constant: +0:154 257 (const uint) +0:155 move second child to first child ( temp uint) +0:155 direct index ( temp uint PrimitiveIndicesNV) +0:155 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:155 Constant: +0:155 95 (const int) +0:155 Constant: +0:155 2 (const uint) +0:156 move second child to first child ( temp uint) +0:156 indirect index ( temp uint PrimitiveIndicesNV) +0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:156 'gid' ( temp uint) +0:156 indirect index ( temp uint PrimitiveIndicesNV) +0:156 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) +0:156 subtract ( temp uint) +0:156 'gid' ( temp uint) +0:156 Constant: +0:156 1 (const uint) +0:159 writePackedPrimitiveIndices4x8NV ( global void) +0:159 Convert int to uint ( temp uint) +0:159 'gl_DrawID' ( in int DrawId) +0:159 Constant: +0:159 16909060 (const uint) +0:161 move second child to first child ( temp uint) +0:161 'gl_PrimitiveCountNV' ( out uint PrimitiveCountNV) +0:161 Constant: +0:161 96 (const uint) +0:163 MemoryBarrierShared ( global void) +0:163 Barrier ( global void) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance, perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV, perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV, perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV}) +0:? 'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask, perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV, perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV}) +0:? 'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV) + diff --git a/Test/baseResults/glsl.460.subgroup.task.out b/Test/baseResults/glsl.460.subgroup.task.out new file mode 100644 index 00000000..0119f8f2 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.task.out @@ -0,0 +1,945 @@ +glsl.460.subgroup.task +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + +Shader version: 460 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_mesh_shader +Requested GL_NV_shader_subgroup_partitioned +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:14 'gl_SubgroupID' ( in uint unknown built-in variable) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:127 Function Definition: main( ( global void) +0:127 Function Parameters: +0:129 Sequence +0:129 Sequence +0:129 move second child to first child ( temp uint) +0:129 'iid' ( temp uint) +0:129 direct index ( temp uint) +0:129 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:129 Constant: +0:129 0 (const int) +0:130 Sequence +0:130 move second child to first child ( temp uint) +0:130 'gid' ( temp uint) +0:130 direct index ( temp uint) +0:130 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:130 Constant: +0:130 0 (const int) +0:131 Sequence +0:131 move second child to first child ( temp uint) +0:131 'viewID' ( temp uint) +0:131 indirect index ( temp uint MeshViewIndicesNV) +0:131 'gl_MeshViewIndicesNV' ( in 4-element array of uint MeshViewIndicesNV) +0:131 mod ( temp uint) +0:131 'gl_MeshViewCountNV' ( in uint MeshViewCountNV) +0:131 Constant: +0:131 4 (const uint) +0:134 Sequence +0:134 Sequence +0:134 move second child to first child ( temp uint) +0:134 'i' ( temp uint) +0:134 Constant: +0:134 0 (const uint) +0:134 Loop with condition tested first +0:134 Loop Condition +0:134 Compare Less Than ( temp bool) +0:134 'i' ( temp uint) +0:134 Constant: +0:134 10 (const uint) +0:134 Loop Body +0:135 Sequence +0:135 move second child to first child ( temp 4-component vector of float) +0:135 indirect index ( temp 4-component vector of float) +0:135 'mem' ( shared 10-element array of 4-component vector of float) +0:135 'i' ( temp uint) +0:135 Construct vec4 ( temp 4-component vector of float) +0:135 Convert uint to float ( temp float) +0:135 add ( temp uint) +0:135 'i' ( temp uint) +0:135 uni_value: direct index for structure (layout( column_major shared) uniform uint) +0:135 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:135 Constant: +0:135 0 (const uint) +0:134 Loop Terminal Expression +0:134 Pre-Increment ( temp uint) +0:134 'i' ( temp uint) +0:137 imageStore ( global void) +0:137 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:137 Construct ivec2 ( temp 2-component vector of int) +0:137 Convert uint to int ( temp int) +0:137 'iid' ( temp uint) +0:137 indirect index ( temp 4-component vector of float) +0:137 'mem' ( shared 10-element array of 4-component vector of float) +0:137 'gid' ( temp uint) +0:138 imageStore ( global void) +0:138 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:138 Construct ivec2 ( temp 2-component vector of int) +0:138 Convert uint to int ( temp int) +0:138 'iid' ( temp uint) +0:138 indirect index ( temp 4-component vector of float) +0:138 'mem' ( shared 10-element array of 4-component vector of float) +0:138 add ( temp uint) +0:138 'gid' ( temp uint) +0:138 Constant: +0:138 1 (const uint) +0:140 MemoryBarrierShared ( global void) +0:140 Barrier ( global void) +0:144 move second child to first child ( temp 2-component vector of float) +0:144 dummy: direct index for structure (layout( std430 offset=0) taskNV out 2-component vector of float) +0:144 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:144 Constant: +0:144 0 (const int) +0:144 Constant: +0:144 30.000000 +0:144 31.000000 +0:145 move second child to first child ( temp 2-component vector of float) +0:145 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:145 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:145 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:145 Constant: +0:145 1 (const int) +0:145 Constant: +0:145 0 (const int) +0:145 Constant: +0:145 32.000000 +0:145 33.000000 +0:146 move second child to first child ( temp 2-component vector of float) +0:146 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:146 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:146 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:146 Constant: +0:146 1 (const int) +0:146 Constant: +0:146 1 (const int) +0:146 Constant: +0:146 34.000000 +0:146 35.000000 +0:147 move second child to first child ( temp 2-component vector of float) +0:147 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:147 Constant: +0:147 1 (const int) +0:147 Constant: +0:147 2 (const int) +0:147 indirect index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:147 Constant: +0:147 1 (const int) +0:147 mod ( temp uint) +0:147 'gid' ( temp uint) +0:147 Constant: +0:147 2 (const uint) +0:148 move second child to first child ( temp uint) +0:148 viewID: direct index for structure (layout( std430 offset=32) taskNV out uint) +0:148 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:148 Constant: +0:148 2 (const int) +0:148 'viewID' ( temp uint) +0:150 MemoryBarrierShared ( global void) +0:150 Barrier ( global void) +0:153 move second child to first child ( temp uint) +0:153 'gl_TaskCountNV' ( out uint TaskCountNV) +0:153 Constant: +0:153 3 (const uint) +0:157 Function Definition: basic_works( ( global void) +0:157 Function Parameters: +0:159 Sequence +0:159 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:160 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:161 subgroupBarrier ( global void) +0:162 subgroupMemoryBarrier ( global void) +0:163 subgroupMemoryBarrierBuffer ( global void) +0:164 subgroupMemoryBarrierImage ( global void) +0:165 subgroupElect ( global bool) +0:166 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:167 'gl_SubgroupID' ( in uint unknown built-in variable) +0:168 subgroupMemoryBarrierShared ( global void) +0:172 Function Definition: ballot_works(vf4; ( global void) +0:172 Function Parameters: +0:172 'f4' ( in 4-component vector of float) +0:173 Sequence +0:173 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:174 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:175 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:176 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:177 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:178 subgroupBroadcast ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:178 Constant: +0:178 0 (const uint) +0:179 subgroupBroadcastFirst ( global 4-component vector of float) +0:179 'f4' ( in 4-component vector of float) +0:180 Sequence +0:180 move second child to first child ( temp 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:180 subgroupBallot ( global 4-component vector of uint) +0:180 Constant: +0:180 false (const bool) +0:181 subgroupInverseBallot ( global bool) +0:181 Constant: +0:181 1 (const uint) +0:181 1 (const uint) +0:181 1 (const uint) +0:181 1 (const uint) +0:182 subgroupBallotBitExtract ( global bool) +0:182 'ballot' ( temp 4-component vector of uint) +0:182 Constant: +0:182 0 (const uint) +0:183 subgroupBallotBitCount ( global uint) +0:183 'ballot' ( temp 4-component vector of uint) +0:184 subgroupBallotInclusiveBitCount ( global uint) +0:184 'ballot' ( temp 4-component vector of uint) +0:185 subgroupBallotExclusiveBitCount ( global uint) +0:185 'ballot' ( temp 4-component vector of uint) +0:186 subgroupBallotFindLSB ( global uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:187 subgroupBallotFindMSB ( global uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:191 Function Definition: vote_works(vf4; ( global void) +0:191 Function Parameters: +0:191 'f4' ( in 4-component vector of float) +0:193 Sequence +0:193 subgroupAll ( global bool) +0:193 Constant: +0:193 true (const bool) +0:194 subgroupAny ( global bool) +0:194 Constant: +0:194 false (const bool) +0:195 subgroupAllEqual ( global bool) +0:195 'f4' ( in 4-component vector of float) +0:200 Function Definition: shuffle_works(vf4; ( global void) +0:200 Function Parameters: +0:200 'f4' ( in 4-component vector of float) +0:202 Sequence +0:202 subgroupShuffle ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:202 Constant: +0:202 0 (const uint) +0:203 subgroupShuffleXor ( global 4-component vector of float) +0:203 'f4' ( in 4-component vector of float) +0:203 Constant: +0:203 1 (const uint) +0:204 subgroupShuffleUp ( global 4-component vector of float) +0:204 'f4' ( in 4-component vector of float) +0:204 Constant: +0:204 1 (const uint) +0:205 subgroupShuffleDown ( global 4-component vector of float) +0:205 'f4' ( in 4-component vector of float) +0:205 Constant: +0:205 1 (const uint) +0:209 Function Definition: arith_works(vf4; ( global void) +0:209 Function Parameters: +0:209 'f4' ( in 4-component vector of float) +0:? Sequence +0:212 subgroupAdd ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:213 subgroupMul ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:214 subgroupMin ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:215 subgroupMax ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:216 subgroupAnd ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:217 subgroupOr ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:218 subgroupXor ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:219 subgroupInclusiveAdd ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) +0:220 subgroupInclusiveMul ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:221 subgroupInclusiveMin ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:222 subgroupInclusiveMax ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:223 subgroupInclusiveAnd ( global 4-component vector of uint) +0:223 'ballot' ( temp 4-component vector of uint) +0:224 subgroupInclusiveOr ( global 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:225 subgroupInclusiveXor ( global 4-component vector of uint) +0:225 'ballot' ( temp 4-component vector of uint) +0:226 subgroupExclusiveAdd ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:227 subgroupExclusiveMul ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:228 subgroupExclusiveMin ( global 4-component vector of float) +0:228 'f4' ( in 4-component vector of float) +0:229 subgroupExclusiveMax ( global 4-component vector of float) +0:229 'f4' ( in 4-component vector of float) +0:230 subgroupExclusiveAnd ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:231 subgroupExclusiveOr ( global 4-component vector of uint) +0:231 'ballot' ( temp 4-component vector of uint) +0:232 subgroupExclusiveXor ( global 4-component vector of uint) +0:232 'ballot' ( temp 4-component vector of uint) +0:236 Function Definition: clustered_works(vf4; ( global void) +0:236 Function Parameters: +0:236 'f4' ( in 4-component vector of float) +0:238 Sequence +0:238 Sequence +0:238 move second child to first child ( temp 4-component vector of uint) +0:238 'ballot' ( temp 4-component vector of uint) +0:238 Constant: +0:238 85 (const uint) +0:238 0 (const uint) +0:238 0 (const uint) +0:238 0 (const uint) +0:239 subgroupClusteredAdd ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:239 Constant: +0:239 2 (const uint) +0:240 subgroupClusteredMul ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:240 Constant: +0:240 2 (const uint) +0:241 subgroupClusteredMin ( global 4-component vector of float) +0:241 'f4' ( in 4-component vector of float) +0:241 Constant: +0:241 2 (const uint) +0:242 subgroupClusteredMax ( global 4-component vector of float) +0:242 'f4' ( in 4-component vector of float) +0:242 Constant: +0:242 2 (const uint) +0:243 subgroupClusteredAnd ( global 4-component vector of uint) +0:243 'ballot' ( temp 4-component vector of uint) +0:243 Constant: +0:243 2 (const uint) +0:244 subgroupClusteredOr ( global 4-component vector of uint) +0:244 'ballot' ( temp 4-component vector of uint) +0:244 Constant: +0:244 2 (const uint) +0:245 subgroupClusteredXor ( global 4-component vector of uint) +0:245 'ballot' ( temp 4-component vector of uint) +0:245 Constant: +0:245 2 (const uint) +0:249 Function Definition: quad_works(vf4; ( global void) +0:249 Function Parameters: +0:249 'f4' ( in 4-component vector of float) +0:251 Sequence +0:251 subgroupQuadBroadcast ( global 4-component vector of float) +0:251 'f4' ( in 4-component vector of float) +0:251 Constant: +0:251 0 (const uint) +0:252 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:252 'f4' ( in 4-component vector of float) +0:253 subgroupQuadSwapVertical ( global 4-component vector of float) +0:253 'f4' ( in 4-component vector of float) +0:254 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:254 'f4' ( in 4-component vector of float) +0:258 Function Definition: partitioned_works(vf4; ( global void) +0:258 Function Parameters: +0:258 'f4' ( in 4-component vector of float) +0:260 Sequence +0:260 Sequence +0:260 move second child to first child ( temp 4-component vector of uint) +0:260 'parti' ( temp 4-component vector of uint) +0:260 subgroupPartitionNV ( global 4-component vector of uint) +0:260 'f4' ( in 4-component vector of float) +0:261 Sequence +0:261 move second child to first child ( temp 4-component vector of uint) +0:261 'ballot' ( temp 4-component vector of uint) +0:261 Constant: +0:261 85 (const uint) +0:261 0 (const uint) +0:261 0 (const uint) +0:261 0 (const uint) +0:262 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:262 'f4' ( in 4-component vector of float) +0:262 'parti' ( temp 4-component vector of uint) +0:263 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:263 'f4' ( in 4-component vector of float) +0:263 'parti' ( temp 4-component vector of uint) +0:264 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:264 'f4' ( in 4-component vector of float) +0:264 'parti' ( temp 4-component vector of uint) +0:265 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:265 'f4' ( in 4-component vector of float) +0:265 'parti' ( temp 4-component vector of uint) +0:266 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:266 'ballot' ( temp 4-component vector of uint) +0:266 'parti' ( temp 4-component vector of uint) +0:267 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:267 'ballot' ( temp 4-component vector of uint) +0:267 'parti' ( temp 4-component vector of uint) +0:268 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:268 'ballot' ( temp 4-component vector of uint) +0:268 'parti' ( temp 4-component vector of uint) +0:269 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:269 'f4' ( in 4-component vector of float) +0:269 'parti' ( temp 4-component vector of uint) +0:270 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:270 'f4' ( in 4-component vector of float) +0:270 'parti' ( temp 4-component vector of uint) +0:271 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:271 'f4' ( in 4-component vector of float) +0:271 'parti' ( temp 4-component vector of uint) +0:272 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:272 'f4' ( in 4-component vector of float) +0:272 'parti' ( temp 4-component vector of uint) +0:273 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:273 'ballot' ( temp 4-component vector of uint) +0:273 'parti' ( temp 4-component vector of uint) +0:274 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:274 'ballot' ( temp 4-component vector of uint) +0:274 'parti' ( temp 4-component vector of uint) +0:275 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:275 'ballot' ( temp 4-component vector of uint) +0:275 'parti' ( temp 4-component vector of uint) +0:276 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:276 'f4' ( in 4-component vector of float) +0:276 'parti' ( temp 4-component vector of uint) +0:277 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:277 'f4' ( in 4-component vector of float) +0:277 'parti' ( temp 4-component vector of uint) +0:278 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:278 'f4' ( in 4-component vector of float) +0:278 'parti' ( temp 4-component vector of uint) +0:279 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:279 'f4' ( in 4-component vector of float) +0:279 'parti' ( temp 4-component vector of uint) +0:280 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:280 'ballot' ( temp 4-component vector of uint) +0:280 'parti' ( temp 4-component vector of uint) +0:281 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:281 'ballot' ( temp 4-component vector of uint) +0:281 'parti' ( temp 4-component vector of uint) +0:282 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:282 'ballot' ( temp 4-component vector of uint) +0:282 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:? 'mem' ( shared 10-element array of 4-component vector of float) +0:? 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) + + +Linked task stage: + + +Shader version: 460 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_mesh_shader +Requested GL_NV_shader_subgroup_partitioned +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:127 Function Definition: main( ( global void) +0:127 Function Parameters: +0:129 Sequence +0:129 Sequence +0:129 move second child to first child ( temp uint) +0:129 'iid' ( temp uint) +0:129 direct index ( temp uint) +0:129 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:129 Constant: +0:129 0 (const int) +0:130 Sequence +0:130 move second child to first child ( temp uint) +0:130 'gid' ( temp uint) +0:130 direct index ( temp uint) +0:130 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:130 Constant: +0:130 0 (const int) +0:131 Sequence +0:131 move second child to first child ( temp uint) +0:131 'viewID' ( temp uint) +0:131 indirect index ( temp uint MeshViewIndicesNV) +0:131 'gl_MeshViewIndicesNV' ( in 4-element array of uint MeshViewIndicesNV) +0:131 mod ( temp uint) +0:131 'gl_MeshViewCountNV' ( in uint MeshViewCountNV) +0:131 Constant: +0:131 4 (const uint) +0:134 Sequence +0:134 Sequence +0:134 move second child to first child ( temp uint) +0:134 'i' ( temp uint) +0:134 Constant: +0:134 0 (const uint) +0:134 Loop with condition tested first +0:134 Loop Condition +0:134 Compare Less Than ( temp bool) +0:134 'i' ( temp uint) +0:134 Constant: +0:134 10 (const uint) +0:134 Loop Body +0:135 Sequence +0:135 move second child to first child ( temp 4-component vector of float) +0:135 indirect index ( temp 4-component vector of float) +0:135 'mem' ( shared 10-element array of 4-component vector of float) +0:135 'i' ( temp uint) +0:135 Construct vec4 ( temp 4-component vector of float) +0:135 Convert uint to float ( temp float) +0:135 add ( temp uint) +0:135 'i' ( temp uint) +0:135 uni_value: direct index for structure (layout( column_major shared) uniform uint) +0:135 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:135 Constant: +0:135 0 (const uint) +0:134 Loop Terminal Expression +0:134 Pre-Increment ( temp uint) +0:134 'i' ( temp uint) +0:137 imageStore ( global void) +0:137 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:137 Construct ivec2 ( temp 2-component vector of int) +0:137 Convert uint to int ( temp int) +0:137 'iid' ( temp uint) +0:137 indirect index ( temp 4-component vector of float) +0:137 'mem' ( shared 10-element array of 4-component vector of float) +0:137 'gid' ( temp uint) +0:138 imageStore ( global void) +0:138 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:138 Construct ivec2 ( temp 2-component vector of int) +0:138 Convert uint to int ( temp int) +0:138 'iid' ( temp uint) +0:138 indirect index ( temp 4-component vector of float) +0:138 'mem' ( shared 10-element array of 4-component vector of float) +0:138 add ( temp uint) +0:138 'gid' ( temp uint) +0:138 Constant: +0:138 1 (const uint) +0:140 MemoryBarrierShared ( global void) +0:140 Barrier ( global void) +0:144 move second child to first child ( temp 2-component vector of float) +0:144 dummy: direct index for structure (layout( std430 offset=0) taskNV out 2-component vector of float) +0:144 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:144 Constant: +0:144 0 (const int) +0:144 Constant: +0:144 30.000000 +0:144 31.000000 +0:145 move second child to first child ( temp 2-component vector of float) +0:145 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:145 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:145 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:145 Constant: +0:145 1 (const int) +0:145 Constant: +0:145 0 (const int) +0:145 Constant: +0:145 32.000000 +0:145 33.000000 +0:146 move second child to first child ( temp 2-component vector of float) +0:146 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:146 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:146 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:146 Constant: +0:146 1 (const int) +0:146 Constant: +0:146 1 (const int) +0:146 Constant: +0:146 34.000000 +0:146 35.000000 +0:147 move second child to first child ( temp 2-component vector of float) +0:147 direct index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:147 Constant: +0:147 1 (const int) +0:147 Constant: +0:147 2 (const int) +0:147 indirect index (layout( std430 offset=8) taskNV temp 2-component vector of float) +0:147 submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float) +0:147 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:147 Constant: +0:147 1 (const int) +0:147 mod ( temp uint) +0:147 'gid' ( temp uint) +0:147 Constant: +0:147 2 (const uint) +0:148 move second child to first child ( temp uint) +0:148 viewID: direct index for structure (layout( std430 offset=32) taskNV out uint) +0:148 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) +0:148 Constant: +0:148 2 (const int) +0:148 'viewID' ( temp uint) +0:150 MemoryBarrierShared ( global void) +0:150 Barrier ( global void) +0:153 move second child to first child ( temp uint) +0:153 'gl_TaskCountNV' ( out uint TaskCountNV) +0:153 Constant: +0:153 3 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:? 'mem' ( shared 10-element array of 4-component vector of float) +0:? 'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID}) + diff --git a/Test/glsl.460.subgroup.mesh b/Test/glsl.460.subgroup.mesh new file mode 100644 index 00000000..19a47578 --- /dev/null +++ b/Test/glsl.460.subgroup.mesh @@ -0,0 +1,293 @@ +#version 460 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, extension not enabled (basic) + gl_SubgroupID; // ERROR, extension not enabled (basic) + subgroupMemoryBarrierShared(); // ERROR, extension not enabled (basic) + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + gl_MeshVerticesNV[iid].gl_Position = vec4(1.0); + gl_MeshVerticesNV[iid].gl_PointSize = 2.0; + gl_MeshVerticesNV[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesNV[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesNV[iid+1].gl_Position = gl_MeshVerticesNV[iid].gl_Position; + gl_MeshVerticesNV[iid+1].gl_PointSize = gl_MeshVerticesNV[iid].gl_PointSize; + gl_MeshVerticesNV[iid+1].gl_ClipDistance[3] = gl_MeshVerticesNV[iid].gl_ClipDistance[3]; + gl_MeshVerticesNV[iid+1].gl_CullDistance[2] = gl_MeshVerticesNV[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesNV[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesNV[iid].gl_Layer = 7; + gl_MeshPrimitivesNV[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesNV[iid].gl_ViewportMask[0] = 9; + + BARRIER(); + + gl_MeshPrimitivesNV[iid+1].gl_PrimitiveID = gl_MeshPrimitivesNV[iid].gl_PrimitiveID; + gl_MeshPrimitivesNV[iid+1].gl_Layer = gl_MeshPrimitivesNV[iid].gl_Layer; + gl_MeshPrimitivesNV[iid+1].gl_ViewportIndex = gl_MeshPrimitivesNV[iid].gl_ViewportIndex; + gl_MeshPrimitivesNV[iid+1].gl_ViewportMask[0] = gl_MeshPrimitivesNV[iid].gl_ViewportMask[0]; + + BARRIER(); + + // check bound limits + gl_PrimitiveIndicesNV[0] = 257; // should truncate 257 -> 1 + gl_PrimitiveIndicesNV[(MAX_PRIM * 3) - 1] = 2; + gl_PrimitiveIndicesNV[gid] = gl_PrimitiveIndicesNV[gid-1]; + + // writes 4 indices at offset gl_DrawID + writePackedPrimitiveIndices4x8NV(gl_DrawID, 0x01020304); + + gl_PrimitiveCountNV = MAX_PRIM * 3; + + BARRIER(); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); + gl_NumSubgroups; // allowed in mesh + gl_SubgroupID; // allowed in mesh + subgroupMemoryBarrierShared(); // allowed in mesh +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} diff --git a/Test/glsl.460.subgroup.task b/Test/glsl.460.subgroup.task new file mode 100644 index 00000000..84d31405 --- /dev/null +++ b/Test/glsl.460.subgroup.task @@ -0,0 +1,284 @@ +#version 460 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, extension not enabled (basic) + gl_SubgroupID; // ERROR, extension not enabled (basic) + subgroupMemoryBarrierShared(); // ERROR, extension not enabled (basic) + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + +#define MAX_VIEWS gl_MaxMeshViewCountNV + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +// test use of shared memory in task shaders: +layout(binding=0) writeonly uniform image2D uni_image; +uniform block0 { + uint uni_value; +}; +shared vec4 mem[10]; + +// test use of task memory in task shaders: +taskNV out Task { + vec2 dummy; + vec2 submesh[3]; + uint viewID; +} mytask; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; + + // 1. shared memory load and stores + for (uint i = 0; i < 10; ++i) { + mem[i] = vec4(i + uni_value); + } + imageStore(uni_image, ivec2(iid), mem[gid]); + imageStore(uni_image, ivec2(iid), mem[gid+1]); + + BARRIER(); + + // 2. task memory stores + + mytask.dummy = vec2(30.0, 31.0); + mytask.submesh[0] = vec2(32.0, 33.0); + mytask.submesh[1] = vec2(34.0, 35.0); + mytask.submesh[2] = mytask.submesh[gid%2]; + mytask.viewID = viewID; + + BARRIER(); + + // 3. set task count + gl_TaskCountNV = 3; +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); + gl_NumSubgroups; // allowed in task + gl_SubgroupID; // allowed in task + subgroupMemoryBarrierShared(); // allowed in task +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} + diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0498b487..156c026d 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -9554,6 +9554,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); + symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); } break; #endif diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index d4e7fb6a..5e79144c 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -253,6 +253,8 @@ INSTANTIATE_TEST_CASE_P( "glsl.450.subgroupShuffleRelative.comp", "glsl.450.subgroupQuad.comp", "glsl.450.subgroupVote.comp", + "glsl.460.subgroup.mesh", + "glsl.460.subgroup.task", "glsl.es320.subgroup.frag", "glsl.es320.subgroup.geom", "glsl.es320.subgroup.tesc",