GLSL/SPV: Pre SPIR-V 1.5, subgroupQuadBroadcast index must be constant

This commit is contained in:
John Kessenich 2019-10-14 23:08:26 -06:00
parent 101ca388fb
commit 765cee8441
3 changed files with 231 additions and 216 deletions

View File

@ -85,11 +85,13 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques
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: 0:232: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:233: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:234: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:235: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 90 compilation errors. No code generated.
ERROR: 0:124: 'id' : argument must be compile-time constant
ERROR: 0:199: 'id' : argument must be compile-time constant
ERROR: 0:236: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:237: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:238: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 0:239: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins
ERROR: 92 compilation errors. No code generated.
Shader version: 450
@ -352,270 +354,278 @@ ERROR: node is still EOpNull!
0:116 Function Definition: ballot_works(vf4; ( global void)
0:116 Function Parameters:
0:116 'f4' ( in 4-component vector of float)
0:117 Sequence
0:117 'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask)
0:118 'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask)
0:119 'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask)
0:120 'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask)
0:121 'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask)
0:122 subgroupBroadcast ( global 4-component vector of float)
0:122 'f4' ( in 4-component vector of float)
0:122 Constant:
0:122 0 (const uint)
0:123 subgroupBroadcastFirst ( global 4-component vector of float)
0:? Sequence
0:118 'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask)
0:119 'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask)
0:120 'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask)
0:121 'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask)
0:122 'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask)
0:123 subgroupBroadcast ( global 4-component vector of float)
0:123 'f4' ( in 4-component vector of float)
0:124 Sequence
0:124 move second child to first child ( temp 4-component vector of uint)
0:124 'ballot' ( temp 4-component vector of uint)
0:124 subgroupBallot ( global 4-component vector of uint)
0:124 Constant:
0:124 false (const bool)
0:125 subgroupInverseBallot ( global bool)
0:125 Constant:
0:125 1 (const uint)
0:125 1 (const uint)
0:125 1 (const uint)
0:125 1 (const uint)
0:126 subgroupBallotBitExtract ( global bool)
0:126 'ballot' ( temp 4-component vector of uint)
0:126 Constant:
0:126 0 (const uint)
0:127 subgroupBallotBitCount ( global uint)
0:127 'ballot' ( temp 4-component vector of uint)
0:128 subgroupBallotInclusiveBitCount ( global uint)
0:123 Constant:
0:123 0 (const uint)
0:124 subgroupBroadcast ( global 4-component vector of float)
0:124 'f4' ( in 4-component vector of float)
0:124 Convert int to uint ( temp uint)
0:124 'i' ( temp int)
0:125 subgroupBroadcastFirst ( global 4-component vector of float)
0:125 'f4' ( in 4-component vector of float)
0:126 Sequence
0:126 move second child to first child ( temp 4-component vector of uint)
0:126 'ballot' ( temp 4-component vector of uint)
0:126 subgroupBallot ( global 4-component vector of uint)
0:126 Constant:
0:126 false (const bool)
0:127 subgroupInverseBallot ( global bool)
0:127 Constant:
0:127 1 (const uint)
0:127 1 (const uint)
0:127 1 (const uint)
0:127 1 (const uint)
0:128 subgroupBallotBitExtract ( global bool)
0:128 'ballot' ( temp 4-component vector of uint)
0:129 subgroupBallotExclusiveBitCount ( global uint)
0:128 Constant:
0:128 0 (const uint)
0:129 subgroupBallotBitCount ( global uint)
0:129 'ballot' ( temp 4-component vector of uint)
0:130 subgroupBallotFindLSB ( global uint)
0:130 subgroupBallotInclusiveBitCount ( global uint)
0:130 'ballot' ( temp 4-component vector of uint)
0:131 subgroupBallotFindMSB ( global uint)
0:131 subgroupBallotExclusiveBitCount ( global uint)
0:131 'ballot' ( temp 4-component vector of uint)
0:135 Function Definition: vote_works(vf4; ( global void)
0:135 Function Parameters:
0:135 'f4' ( in 4-component vector of float)
0:137 Sequence
0:137 subgroupAll ( global bool)
0:137 Constant:
0:137 true (const bool)
0:138 subgroupAny ( global bool)
0:138 Constant:
0:138 false (const bool)
0:139 subgroupAllEqual ( global bool)
0:139 'f4' ( in 4-component vector of float)
0:144 Function Definition: shuffle_works(vf4; ( global void)
0:144 Function Parameters:
0:144 'f4' ( in 4-component vector of float)
0:146 Sequence
0:146 subgroupShuffle ( global 4-component vector of float)
0:146 'f4' ( in 4-component vector of float)
0:146 Constant:
0:146 0 (const uint)
0:147 subgroupShuffleXor ( global 4-component vector of float)
0:147 'f4' ( in 4-component vector of float)
0:147 Constant:
0:147 1 (const uint)
0:148 subgroupShuffleUp ( global 4-component vector of float)
0:132 subgroupBallotFindLSB ( global uint)
0:132 'ballot' ( temp 4-component vector of uint)
0:133 subgroupBallotFindMSB ( global uint)
0:133 'ballot' ( temp 4-component vector of uint)
0:137 Function Definition: vote_works(vf4; ( global void)
0:137 Function Parameters:
0:137 'f4' ( in 4-component vector of float)
0:139 Sequence
0:139 subgroupAll ( global bool)
0:139 Constant:
0:139 true (const bool)
0:140 subgroupAny ( global bool)
0:140 Constant:
0:140 false (const bool)
0:141 subgroupAllEqual ( global bool)
0:141 'f4' ( in 4-component vector of float)
0:146 Function Definition: shuffle_works(vf4; ( global void)
0:146 Function Parameters:
0:146 'f4' ( in 4-component vector of float)
0:148 Sequence
0:148 subgroupShuffle ( global 4-component vector of float)
0:148 'f4' ( in 4-component vector of float)
0:148 Constant:
0:148 1 (const uint)
0:149 subgroupShuffleDown ( global 4-component vector of float)
0:148 0 (const uint)
0:149 subgroupShuffleXor ( global 4-component vector of float)
0:149 'f4' ( in 4-component vector of float)
0:149 Constant:
0:149 1 (const uint)
0:153 Function Definition: arith_works(vf4; ( global void)
0:153 Function Parameters:
0:153 'f4' ( in 4-component vector of float)
0:150 subgroupShuffleUp ( global 4-component vector of float)
0:150 'f4' ( in 4-component vector of float)
0:150 Constant:
0:150 1 (const uint)
0:151 subgroupShuffleDown ( global 4-component vector of float)
0:151 'f4' ( in 4-component vector of float)
0:151 Constant:
0:151 1 (const uint)
0:155 Function Definition: arith_works(vf4; ( global void)
0:155 Function Parameters:
0:155 'f4' ( in 4-component vector of float)
0:? Sequence
0:156 subgroupAdd ( global 4-component vector of float)
0:156 'f4' ( in 4-component vector of float)
0:157 subgroupMul ( global 4-component vector of float)
0:157 'f4' ( in 4-component vector of float)
0:158 subgroupMin ( global 4-component vector of float)
0:158 subgroupAdd ( global 4-component vector of float)
0:158 'f4' ( in 4-component vector of float)
0:159 subgroupMax ( global 4-component vector of float)
0:159 subgroupMul ( global 4-component vector of float)
0:159 'f4' ( in 4-component vector of float)
0:160 subgroupAnd ( global 4-component vector of uint)
0:160 'ballot' ( temp 4-component vector of uint)
0:161 subgroupOr ( global 4-component vector of uint)
0:161 'ballot' ( temp 4-component vector of uint)
0:162 subgroupXor ( global 4-component vector of uint)
0:160 subgroupMin ( global 4-component vector of float)
0:160 'f4' ( in 4-component vector of float)
0:161 subgroupMax ( global 4-component vector of float)
0:161 'f4' ( in 4-component vector of float)
0:162 subgroupAnd ( global 4-component vector of uint)
0:162 'ballot' ( temp 4-component vector of uint)
0:163 subgroupInclusiveAdd ( global 4-component vector of float)
0:163 'f4' ( in 4-component vector of float)
0:164 subgroupInclusiveMul ( global 4-component vector of float)
0:164 'f4' ( in 4-component vector of float)
0:165 subgroupInclusiveMin ( global 4-component vector of float)
0:163 subgroupOr ( global 4-component vector of uint)
0:163 'ballot' ( temp 4-component vector of uint)
0:164 subgroupXor ( global 4-component vector of uint)
0:164 'ballot' ( temp 4-component vector of uint)
0:165 subgroupInclusiveAdd ( global 4-component vector of float)
0:165 'f4' ( in 4-component vector of float)
0:166 subgroupInclusiveMax ( global 4-component vector of float)
0:166 subgroupInclusiveMul ( global 4-component vector of float)
0:166 'f4' ( in 4-component vector of float)
0:167 subgroupInclusiveAnd ( global 4-component vector of uint)
0:167 'ballot' ( temp 4-component vector of uint)
0:168 subgroupInclusiveOr ( global 4-component vector of uint)
0:168 'ballot' ( temp 4-component vector of uint)
0:169 subgroupInclusiveXor ( global 4-component vector of uint)
0:167 subgroupInclusiveMin ( global 4-component vector of float)
0:167 'f4' ( in 4-component vector of float)
0:168 subgroupInclusiveMax ( global 4-component vector of float)
0:168 'f4' ( in 4-component vector of float)
0:169 subgroupInclusiveAnd ( global 4-component vector of uint)
0:169 'ballot' ( temp 4-component vector of uint)
0:170 subgroupExclusiveAdd ( global 4-component vector of float)
0:170 'f4' ( in 4-component vector of float)
0:171 subgroupExclusiveMul ( global 4-component vector of float)
0:171 'f4' ( in 4-component vector of float)
0:172 subgroupExclusiveMin ( global 4-component vector of float)
0:170 subgroupInclusiveOr ( global 4-component vector of uint)
0:170 'ballot' ( temp 4-component vector of uint)
0:171 subgroupInclusiveXor ( global 4-component vector of uint)
0:171 'ballot' ( temp 4-component vector of uint)
0:172 subgroupExclusiveAdd ( global 4-component vector of float)
0:172 'f4' ( in 4-component vector of float)
0:173 subgroupExclusiveMax ( global 4-component vector of float)
0:173 subgroupExclusiveMul ( global 4-component vector of float)
0:173 'f4' ( in 4-component vector of float)
0:174 subgroupExclusiveAnd ( global 4-component vector of uint)
0:174 'ballot' ( temp 4-component vector of uint)
0:175 subgroupExclusiveOr ( global 4-component vector of uint)
0:175 'ballot' ( temp 4-component vector of uint)
0:176 subgroupExclusiveXor ( global 4-component vector of uint)
0:174 subgroupExclusiveMin ( global 4-component vector of float)
0:174 'f4' ( in 4-component vector of float)
0:175 subgroupExclusiveMax ( global 4-component vector of float)
0:175 'f4' ( in 4-component vector of float)
0:176 subgroupExclusiveAnd ( global 4-component vector of uint)
0:176 'ballot' ( temp 4-component vector of uint)
0:180 Function Definition: clustered_works(vf4; ( global void)
0:180 Function Parameters:
0:180 'f4' ( in 4-component vector of float)
0:182 Sequence
0:182 Sequence
0:182 move second child to first child ( temp 4-component vector of uint)
0:182 'ballot' ( temp 4-component vector of uint)
0:182 Constant:
0:182 85 (const uint)
0:182 0 (const uint)
0:182 0 (const uint)
0:182 0 (const uint)
0:183 subgroupClusteredAdd ( global 4-component vector of float)
0:183 'f4' ( in 4-component vector of float)
0:183 Constant:
0:183 2 (const uint)
0:184 subgroupClusteredMul ( global 4-component vector of float)
0:184 'f4' ( in 4-component vector of float)
0:184 Constant:
0:184 2 (const uint)
0:185 subgroupClusteredMin ( global 4-component vector of float)
0:177 subgroupExclusiveOr ( global 4-component vector of uint)
0:177 'ballot' ( temp 4-component vector of uint)
0:178 subgroupExclusiveXor ( global 4-component vector of uint)
0:178 'ballot' ( temp 4-component vector of uint)
0:182 Function Definition: clustered_works(vf4; ( global void)
0:182 Function Parameters:
0:182 'f4' ( in 4-component vector of float)
0:184 Sequence
0:184 Sequence
0:184 move second child to first child ( temp 4-component vector of uint)
0:184 'ballot' ( temp 4-component vector of uint)
0:184 Constant:
0:184 85 (const uint)
0:184 0 (const uint)
0:184 0 (const uint)
0:184 0 (const uint)
0:185 subgroupClusteredAdd ( global 4-component vector of float)
0:185 'f4' ( in 4-component vector of float)
0:185 Constant:
0:185 2 (const uint)
0:186 subgroupClusteredMax ( global 4-component vector of float)
0:186 subgroupClusteredMul ( global 4-component vector of float)
0:186 'f4' ( in 4-component vector of float)
0:186 Constant:
0:186 2 (const uint)
0:187 subgroupClusteredAnd ( global 4-component vector of uint)
0:187 'ballot' ( temp 4-component vector of uint)
0:187 subgroupClusteredMin ( global 4-component vector of float)
0:187 'f4' ( in 4-component vector of float)
0:187 Constant:
0:187 2 (const uint)
0:188 subgroupClusteredOr ( global 4-component vector of uint)
0:188 'ballot' ( temp 4-component vector of uint)
0:188 subgroupClusteredMax ( global 4-component vector of float)
0:188 'f4' ( in 4-component vector of float)
0:188 Constant:
0:188 2 (const uint)
0:189 subgroupClusteredXor ( global 4-component vector of uint)
0:189 subgroupClusteredAnd ( global 4-component vector of uint)
0:189 'ballot' ( temp 4-component vector of uint)
0:189 Constant:
0:189 2 (const uint)
0:193 Function Definition: quad_works(vf4; ( global void)
0:193 Function Parameters:
0:193 'f4' ( in 4-component vector of float)
0:195 Sequence
0:195 subgroupQuadBroadcast ( global 4-component vector of float)
0:195 'f4' ( in 4-component vector of float)
0:195 Constant:
0:195 0 (const uint)
0:196 subgroupQuadSwapHorizontal ( global 4-component vector of float)
0:196 'f4' ( in 4-component vector of float)
0:197 subgroupQuadSwapVertical ( global 4-component vector of float)
0:197 'f4' ( in 4-component vector of float)
0:198 subgroupQuadSwapDiagonal ( global 4-component vector of float)
0:190 subgroupClusteredOr ( global 4-component vector of uint)
0:190 'ballot' ( temp 4-component vector of uint)
0:190 Constant:
0:190 2 (const uint)
0:191 subgroupClusteredXor ( global 4-component vector of uint)
0:191 'ballot' ( temp 4-component vector of uint)
0:191 Constant:
0:191 2 (const uint)
0:195 Function Definition: quad_works(vf4; ( global void)
0:195 Function Parameters:
0:195 'f4' ( in 4-component vector of float)
0:? Sequence
0:198 subgroupQuadBroadcast ( global 4-component vector of float)
0:198 'f4' ( in 4-component vector of float)
0:202 Function Definition: partitioned_works(vf4; ( global void)
0:202 Function Parameters:
0:202 'f4' ( in 4-component vector of float)
0:204 Sequence
0:204 Sequence
0:204 move second child to first child ( temp 4-component vector of uint)
0:204 'parti' ( temp 4-component vector of uint)
0:204 subgroupPartitionNV ( global 4-component vector of uint)
0:204 'f4' ( in 4-component vector of float)
0:205 Sequence
0:205 move second child to first child ( temp 4-component vector of uint)
0:205 'ballot' ( temp 4-component vector of uint)
0:205 Constant:
0:205 85 (const uint)
0:205 0 (const uint)
0:205 0 (const uint)
0:205 0 (const uint)
0:206 subgroupPartitionedAddNV ( global 4-component vector of float)
0:206 'f4' ( in 4-component vector of float)
0:206 'parti' ( temp 4-component vector of uint)
0:207 subgroupPartitionedMulNV ( global 4-component vector of float)
0:207 'f4' ( in 4-component vector of float)
0:207 'parti' ( temp 4-component vector of uint)
0:208 subgroupPartitionedMinNV ( global 4-component vector of float)
0:208 'f4' ( in 4-component vector of float)
0:208 'parti' ( temp 4-component vector of uint)
0:209 subgroupPartitionedMaxNV ( global 4-component vector of float)
0:209 'f4' ( in 4-component vector of float)
0:209 'parti' ( temp 4-component vector of uint)
0:210 subgroupPartitionedAndNV ( global 4-component vector of uint)
0:210 'ballot' ( temp 4-component vector of uint)
0:198 Constant:
0:198 0 (const uint)
0:199 subgroupQuadBroadcast ( global 4-component vector of float)
0:199 'f4' ( in 4-component vector of float)
0:199 Convert int to uint ( temp uint)
0:199 'i' ( temp int)
0:200 subgroupQuadSwapHorizontal ( global 4-component vector of float)
0:200 'f4' ( in 4-component vector of float)
0:201 subgroupQuadSwapVertical ( global 4-component vector of float)
0:201 'f4' ( in 4-component vector of float)
0:202 subgroupQuadSwapDiagonal ( global 4-component vector of float)
0:202 'f4' ( in 4-component vector of float)
0:206 Function Definition: partitioned_works(vf4; ( global void)
0:206 Function Parameters:
0:206 'f4' ( in 4-component vector of float)
0:208 Sequence
0:208 Sequence
0:208 move second child to first child ( temp 4-component vector of uint)
0:208 'parti' ( temp 4-component vector of uint)
0:208 subgroupPartitionNV ( global 4-component vector of uint)
0:208 'f4' ( in 4-component vector of float)
0:209 Sequence
0:209 move second child to first child ( temp 4-component vector of uint)
0:209 'ballot' ( temp 4-component vector of uint)
0:209 Constant:
0:209 85 (const uint)
0:209 0 (const uint)
0:209 0 (const uint)
0:209 0 (const uint)
0:210 subgroupPartitionedAddNV ( global 4-component vector of float)
0:210 'f4' ( in 4-component vector of float)
0:210 'parti' ( temp 4-component vector of uint)
0:211 subgroupPartitionedOrNV ( global 4-component vector of uint)
0:211 'ballot' ( temp 4-component vector of uint)
0:211 subgroupPartitionedMulNV ( global 4-component vector of float)
0:211 'f4' ( in 4-component vector of float)
0:211 'parti' ( temp 4-component vector of uint)
0:212 subgroupPartitionedXorNV ( global 4-component vector of uint)
0:212 'ballot' ( temp 4-component vector of uint)
0:212 subgroupPartitionedMinNV ( global 4-component vector of float)
0:212 'f4' ( in 4-component vector of float)
0:212 'parti' ( temp 4-component vector of uint)
0:213 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
0:213 subgroupPartitionedMaxNV ( global 4-component vector of float)
0:213 'f4' ( in 4-component vector of float)
0:213 'parti' ( temp 4-component vector of uint)
0:214 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
0:214 'f4' ( in 4-component vector of float)
0:214 subgroupPartitionedAndNV ( global 4-component vector of uint)
0:214 'ballot' ( temp 4-component vector of uint)
0:214 'parti' ( temp 4-component vector of uint)
0:215 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
0:215 'f4' ( in 4-component vector of float)
0:215 subgroupPartitionedOrNV ( global 4-component vector of uint)
0:215 'ballot' ( temp 4-component vector of uint)
0:215 'parti' ( temp 4-component vector of uint)
0:216 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
0:216 'f4' ( in 4-component vector of float)
0:216 subgroupPartitionedXorNV ( global 4-component vector of uint)
0:216 'ballot' ( temp 4-component vector of uint)
0:216 'parti' ( temp 4-component vector of uint)
0:217 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
0:217 'ballot' ( temp 4-component vector of uint)
0:217 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
0:217 'f4' ( in 4-component vector of float)
0:217 'parti' ( temp 4-component vector of uint)
0:218 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
0:218 'ballot' ( temp 4-component vector of uint)
0:218 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
0:218 'f4' ( in 4-component vector of float)
0:218 'parti' ( temp 4-component vector of uint)
0:219 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
0:219 'ballot' ( temp 4-component vector of uint)
0:219 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
0:219 'f4' ( in 4-component vector of float)
0:219 'parti' ( temp 4-component vector of uint)
0:220 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
0:220 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
0:220 'f4' ( in 4-component vector of float)
0:220 'parti' ( temp 4-component vector of uint)
0:221 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
0:221 'f4' ( in 4-component vector of float)
0:221 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
0:221 'ballot' ( temp 4-component vector of uint)
0:221 'parti' ( temp 4-component vector of uint)
0:222 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
0:222 'f4' ( in 4-component vector of float)
0:222 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
0:222 'ballot' ( temp 4-component vector of uint)
0:222 'parti' ( temp 4-component vector of uint)
0:223 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
0:223 'f4' ( in 4-component vector of float)
0:223 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
0:223 'ballot' ( temp 4-component vector of uint)
0:223 'parti' ( temp 4-component vector of uint)
0:224 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
0:224 'ballot' ( temp 4-component vector of uint)
0:224 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
0:224 'f4' ( in 4-component vector of float)
0:224 'parti' ( temp 4-component vector of uint)
0:225 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
0:225 'ballot' ( temp 4-component vector of uint)
0:225 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
0:225 'f4' ( in 4-component vector of float)
0:225 'parti' ( temp 4-component vector of uint)
0:226 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:226 'ballot' ( temp 4-component vector of uint)
0:226 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
0:226 'f4' ( in 4-component vector of float)
0:226 'parti' ( temp 4-component vector of uint)
0:230 Function Definition: sm_builtins_err( ( global void)
0:230 Function Parameters:
0:232 Sequence
0:232 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV)
0:233 'gl_SMCountNV' ( flat in uint SMCountNV)
0:234 'gl_WarpIDNV' ( flat in uint WarpIDNV)
0:235 'gl_SMIDNV' ( flat in uint SMIDNV)
0:242 Function Definition: sm_builtins( ( global void)
0:242 Function Parameters:
0:244 Sequence
0:244 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV)
0:245 'gl_SMCountNV' ( flat in uint SMCountNV)
0:246 'gl_WarpIDNV' ( flat in uint WarpIDNV)
0:247 'gl_SMIDNV' ( flat in uint SMIDNV)
0:227 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
0:227 'f4' ( in 4-component vector of float)
0:227 'parti' ( temp 4-component vector of uint)
0:228 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
0:228 'ballot' ( temp 4-component vector of uint)
0:228 'parti' ( temp 4-component vector of uint)
0:229 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
0:229 'ballot' ( temp 4-component vector of uint)
0:229 'parti' ( temp 4-component vector of uint)
0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
0:230 'ballot' ( temp 4-component vector of uint)
0:230 'parti' ( temp 4-component vector of uint)
0:234 Function Definition: sm_builtins_err( ( global void)
0:234 Function Parameters:
0:236 Sequence
0:236 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV)
0:237 'gl_SMCountNV' ( flat in uint SMCountNV)
0:238 'gl_WarpIDNV' ( flat in uint WarpIDNV)
0:239 'gl_SMIDNV' ( flat in uint SMIDNV)
0:246 Function Definition: sm_builtins( ( global void)
0:246 Function Parameters:
0:248 Sequence
0:248 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV)
0:249 'gl_SMCountNV' ( flat in uint SMCountNV)
0:250 'gl_WarpIDNV' ( flat in uint WarpIDNV)
0:251 'gl_SMIDNV' ( flat in uint SMIDNV)
0:? Linker Objects
0:? 'data' (layout( location=0) out 4-component vector of uint)

View File

@ -114,12 +114,14 @@ void main (void)
#extension GL_KHR_shader_subgroup_ballot: enable
void ballot_works(vec4 f4) {
int i;
gl_SubgroupEqMask;
gl_SubgroupGeMask;
gl_SubgroupGtMask;
gl_SubgroupLeMask;
gl_SubgroupLtMask;
subgroupBroadcast(f4, 0);
subgroupBroadcast(f4, i);
subgroupBroadcastFirst(f4);
uvec4 ballot = subgroupBallot(false);
subgroupInverseBallot(uvec4(0x1));
@ -192,7 +194,9 @@ void clustered_works(vec4 f4)
#extension GL_KHR_shader_subgroup_quad: enable
void quad_works(vec4 f4)
{
int i;
subgroupQuadBroadcast(f4, 0);
subgroupQuadBroadcast(f4, i);
subgroupQuadSwapHorizontal(f4);
subgroupQuadSwapVertical(f4);
subgroupQuadSwapDiagonal(f4);

View File

@ -2155,6 +2155,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
break;
case EOpSubgroupBroadcast:
case EOpSubgroupQuadBroadcast:
if (spvVersion.spv < EShTargetSpv_1_5) {
// <id> must be an integral constant expression.
if ((*argp)[1]->getAsConstantUnion() == nullptr)